【发布时间】:2021-12-25 05:22:45
【问题描述】:
我正在查看 x86-64 ISA,leaq 指令用于将地址加载到指定寄存器,我正在查看以下示例:
long m12(long x){
return x *12;
}
相当于
leaq (%rdi, %rdi, 2), %rax
salq $2, %rax
我隐约明白这里的意思是leaq 没有引用计算出的“地址”给出的内存位置,而是直接重新定位计算出的“地址”。但是,%rdi 只保存一个整数。从某种意义上说,这是一个地址吗?
【问题讨论】:
-
地址只是一个整数。计算机不知道整数是否是地址,它也不关心。它只是执行计算。