簡體   English   中英

匯編中的有效地址

[英]effective address in assembly

我正在查看 x86-64 ISA,並且leaq指令用於將地址加載到指定的寄存器,我正在查看以下示例:

long m12(long x){
    return x *12;
}

這相當於

leaq (%rdi, %rdi, 2), %rax
salq $2, %rax

我隱約明白這里的意思是leaq不引用計算出的“地址”給定的內存位置,而是直接重新定位計算出的“地址”。 但是, %rdi只保存一個整數。 從某種意義上說,這是一個地址嗎?

LEA實際上與地址沒有任何關系。 雖然它設計用於地址和偏移量,但數字實際上不必是地址和偏移量。 因此,它通常用於有效地對非地址但也對地址執行此類求和。

leaq (%rdi, %rdi, 2), %rax   // rax = rdi + rdi*2 = 3*rdi

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM