对于这条 LEAL 指令,0x10 的作用是什么?是乘法、加法还是其他什么?
leal 0x10(%ebx), %eax
有人可以澄清一下吗?这是 Linux 机器上的 x86 汇编器。
最佳答案
leal 或 lea 全称是“加载有效地址”,它的作用正是如此:它进行地址计算。
在您的示例中,地址计算非常简单,因为它只是向 ebx 添加偏移量并将结果存储在 eax 中:
eax = ebx + 0x10
lea 可以做更多事情。它可以将寄存器与常量 2、4 和 8 相加、相乘,以进行字、整数和 double 的地址计算。它还可以添加偏移量。
请注意,lea 的特殊之处在于它永远不会修改标志,即使您将其用作简单的添加(如上例所示)。编译器有时会利用此功能并用 lea 替换添加项以帮助调度程序。由于这个原因,在编译代码中执行简单算术的 lea 指令并不罕见。
关于assembly - "leal 0x10(%ebx), %eax"x86 汇编指令中的 0x10 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4003894/