【发布时间】:2020-11-11 05:41:28
【问题描述】:
当我运行我的代码(任何代码)时,在调试模式下我可以选择“反汇编”。
我知道“反汇编”是从机器代码(存储在目标文件中的“1”和“0”)创建汇编代码。
所以,我可以假设当我在 Visual Studio 中编译我的代码时,C/C++ 代码与机器代码/目标文件之间没有“Assembly/Assembler”阶段,如果我想查看汇编代码我需要让 Visual Studio 将其从目标文件反汇编为程序集。
所以我的问题是:
-
我说的对,除了反汇编,没有办法看asm吗?
-
(如果 1 为否):为什么 Visual Studio 的调试器显示“反汇编”选项,而不是“汇编”?
-
Clang/GCC 有组装阶段,还是 C/C++ 代码直接编译成目标代码?
编者注:GCC 与大多数其他主流 C/C++ 编译器(如 clang/LLVM 和 MSVC)对于 3 的答案实际上是不同的。由于这与 MSVC 的工作方式是一个单独的问题,因此该部分与这些其他 SO Q&As 重复:
【问题讨论】:
-
有一个编译器选项可以输出“汇编列表”而不是二进制文件:docs.microsoft.com/en-us/cpp/build/reference/…
标签: c++ visual-studio assembly gcc compiler-construction