当我运行我的代码(任何代码)时,在调试模式下我可以选择“反汇编”。
我知道“反汇编”是从机器代码(存储在目标文件中的“1”和“0”)创建汇编代码。
所以,我可以假设当我在 Visual Studio 中编译我的代码时,在 C/C++ 代码到机器代码/目标文件之间没有“汇编/汇编”阶段,如果我想查看汇编代码,我需要要求 Visual Studio 将其从目标文件反汇编为程序集。
所以我的问题是:
我说的对,除了反汇编就没有办法看到asm了吗?
(如果 1 为否):为什么 Visual Studio 的调试器显示“反汇编”选项,而不是“汇编”?
Clang/GCC 是否有汇编阶段,或者 C/C++ 代码是否直接编译为目标代码?
编者按:对于 GCC 与大多数其他主流 C/C++ 编译器(如 clang/LLVM 和 MSVC),3 的答案实际上有所不同。由于这是与 MSVC 的工作方式不同的问题,因此该部分是这些其他 SO Q&A 的副本: