2

私は以下のようなコードを持っています:

    .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) に保存したいのですが、どうすればよいですか?

4

2 に答える 2

3

私のメンタル コンパイラは、AT&T ではなく Intel 構文を出力しますが、次のように考えてください。

lea eax, myvar + 12

eax は、'1' 値のアドレスを持つようになりました。

于 2013-02-13T00:45:16.967 に答える
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
于 2013-02-13T01:08:03.670 に答える