我有一段代码如下:
.section .data
myvar:
.long 4,3,2,1
.section .text
.globl _start
_start:
movl $0, %edi
movl myvar(,%ed1,4), %eax
movl $0, %ebx
我想在ebx(即1)中存储我的数组“myvar”的最后一个元素的地址,我该怎么做?
答案 0 :(得分:3)
我的心理编译器输出英特尔语法,而不是AT& T,但你应该明白这个想法:
lea eax, myvar + 12
eax现在具有“1”值的地址。
答案 1 :(得分:1)
好的,我知道了,我们可以使用$ myvar + N
示例:
.section .data
myvar: .long 4,3,2,1
.section .text
.globl _start
_start:
movl $0, %edi
movl $myvar+0, %eax
movl $myvar+4, %ebx
movl $myvar+8, %ecx
movl $myvar+12, %edx
movl $myvar+16, %edi
movl $1, %ebx
movl $1, %eax
int $0x80