我有一段代码如下:
.section .data
myvar:
.long 4,3,2,1
.section .text
.globl _start
_start:
movl $0, %edi
movl myvar(,%ed1,4), %eax
movl $0, %ebx
我想将数组“myvar”的最后一个元素的地址存储在 ebx 中(即 1),我该怎么做?
我的心理编译器输出英特尔语法,而不是 AT&T 的,但你应该明白:
lea eax, myvar + 12
eax 现在有 '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