Unable to use a variable in instruction
A D <[email protected]> Sun, 14 Oct 2007 19:37:55 -0400
| Newsgroups | org.kernel.vger.linux-assembly |
|---|---|
| Message-ID | <[email protected]> |
I'm having strange problem accessing a variable in a gnu assembly language program. When i write a code: .section .data x = 4 mm: .int 1, 2 .section .text .globl _start _start: nop movl x, %ecx #can't do this movl $1, %eax movl $0, %ebx int $0x80 I can't move the contents of variable x to %ecx register. This program compiles and links without giving any error message. But when i run the program I get: Segmentation fault(core dumped) Debugging with gdb using core: Core was generated by `./test'. Program terminated with signal 11, Segmentation fault. #0 _start () at test.s:14 10 movl x, %ecx #can't do this Another odd thing about it is when i modify the program: .section .data x = 4 mm: .int 1, 2 .section .text .globl _start _start: nop movl $0, %ecx movl mm(, %ecx, x), %eax movl $1, %eax movl $0, %ebx int $0x80 the code runs without any problem. Even %ecx register contains the correct value. Is it possible to explain the reason why I can't move directly the value of x in the first place? Isn't x a variable? If not how come it can store value(in this case 4) and be used as a size of an array's element? Thanks. _________________________________________________________________ Express yourself with free Messenger emoticons. Get them today! http://www.freemessengeremoticons.ca/?icid=EMENCA122