私は以下のようなコードを持っています:
.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 ではなく Intel 構文を出力しますが、次のように考えてください。
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