2013-02-13 37 views
1

地址有一段代碼如下:我怎樣在寄存器存儲在x86

.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陣列「MYVAR」(這是1的最後一個元素的地址), 我怎麼做 ?

回答

2

我的精神編譯器輸出Intel語法,而不是在& T的,但你應該得到的想法:

lea eax, myvar + 12 

EAX現在有值「1」的地址。

+2

的Intel Inside。哈哈 – Dacto 2013-02-13 00:49:00

+0

謝謝,需要檢查什麼是在AT&T語法相當於lea,我想這是movl,但不知道 – mrashok 2013-02-13 00:59:37

+0

lea在at&t語法支持 - 我知道:) – 2013-02-13 01:01:34

0

好吧,我得到它,我們可以使用$ 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