为什么x86的反汇编显示x64平台的寄存器?

时间:2016-01-24 19:51:40

标签: c++ assembly x86 disassembly

以下代码具有未定义的行为。这就是我试图查看代码的程序集(x86)的原因。对于clang和gcc存在rbp, rsp, rax, rdi而不是ebp, esp, eaxedi等寄存器,我感到很惊讶。例如,当我查看反汇编时,在VS2015中调试此代码段时,在编译x86平台时,我看不到任何以r开头的寄存器。

#include <iostream>
void f(int i, int j) { std::cout << i + j << '\n'; }
int main()
{
    int i = 1;
    f(i = -1, i = -1000);
    std::cout << i << '\n';
}

1 个答案:

答案 0 :(得分:-1)

Jester的评论已经回答了这个问题:

假设代码是针对x64而进行了反汇编,实际上代码是针对x86的,显然需要为此反汇编程序使用-m32开关。