我对两者之间的区别感到有点困惑
leal -4(%ebp), %eax 和
movl -4(%ebp), %eax有人能给我解释一下吗?
发布于 2012-06-27 01:36:36
LEA (加载有效地址)只计算操作数的地址,并不实际取消对它的引用。大多数情况下,它只是执行类似于组合乘法和加法的计算,例如,数组索引。
在本例中,它做了一个简单的数字减法:leal -4(%ebp), %eax只是将%ebp - 4的值赋给%eax寄存器。它等同于一条sub指令,只不过sub要求目标与源之一相同。
相反,movl指令访问%ebp - 4处的内存位置,并将该值存储到%eax中。
发布于 2012-06-27 01:16:54
等同于英特尔语法中的LEA,加载有效地址(长?)。
发布于 2016-01-15 15:19:04
例如,LEA和MOV都可以使用变量的偏移量加载寄存器。
MOV还可以将内存位置的内容传输到寄存器,而LEA不能。LEA和MOV都可以计算“有效偏移量”,这可以更有效地进行数学计算
https://stackoverflow.com/questions/11212444
复制相似问题