机器指令中的LEAL和MOVL

时间:2019-01-06 04:29:17

标签: c machine-code

以下机器代码之间有什么区别?

  
    

movl 8(%ebp),%ecx

         

重试8(%ebp),%ecx

  

有人可以向我解释吗?

1 个答案:

答案 0 :(得分:2)

第一个获取8(%ebp)指向的32位值。

后者计算平面地址

因此,在C中,给定int x = 0;,并且它位于8(%ebp)(即x在函数的堆栈框架中):

第一个是int y = x;

后者是int *z = &x;

在机器代码中[对于大多数/许多体系结构,例如x86-但不是所有(例如mc68000的]寄存器都是相同的,无论它们是否包含值或地址。