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- To unsubscribe from this list: send the line "unsubscribe linux-assembly" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html
- Follow-Ups:
- Re: Unable to use a variable in instruction
- From: Robert Plantz
- Re: Unable to use a variable in instruction
- From: Frank Kotler
- Re: Unable to use a variable in instruction
- Prev by Date: about shared libraries
- Next by Date: Re: Unable to use a variable in instruction
- Previous by thread: about shared libraries
- Next by thread: Re: Unable to use a variable in instruction
- Index(es):