好吧,我正在尝试将这个程序集翻译成 C 语言。
所以我的困惑在于第 7 行,其中似乎 2 * x 存储在变量 i 中。但这似乎不符合C代码的顺序。我对这个的解释是错误的吗?它实际上是将 2 * x 存储到 val 中吗?
组装:
C:
最佳答案
我没有看到你的C代码,但汇编代码足够清晰。它将参数添加到自身并将其存储在局部变量中。
编辑:现在我看到了 C 代码。看来在地址-4(%ebp)处有变量val,这就是对应的代码
int val = 2 * x;
顺便说一句,检查堆栈中变量的顺序很容易。编写一个简单的程序
#include <stdio.h>
int main(void)
{
int a[1] = { 0 };
int b = 0;
a[1] = 15;
printf( "%d\n", b );
printf( "%d\n", a[0] );
return 0;
}
如果输出 15,则编译器以相反的顺序将变量放入堆栈。我在 www.ideone.com 上使用 GCC 测试了这段代码,并得到了预期的结果
15
0
关于c - 汇编到 C 翻译 : Order of Local variables?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26443350/