以下机器代码之间有什么区别?
movl 8(%ebp),%ecx
重试8(%ebp),%ecx
有人可以向我解释吗?
答案 0 :(得分:2)
第一个获取由8(%ebp)
指向的32位值。
后者计算平面地址。
因此,在C中,给定int x = 0;
,并且它位于8(%ebp)
(即x
在函数的堆栈框架中):
第一个是int y = x;
后者是int *z = &x;
在机器代码中[对于大多数/许多体系结构,例如x86
-但不是所有(例如mc68000
的]寄存器都是相同的,无论它们是否包含值或地址。