[英]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.