小编Sha*_*hay的帖子

Visual Studio 是从 C 源代码还是从它编译成的二进制代码生成程序集?

当我运行我的代码(任何代码)时,在调试模式下我可以选择“反汇编”。

我知道“反汇编”是从机器代码(存储在目标文件中的“1”和“0”)创建汇编代码。

所以,我可以假设当我在 Visual Studio 中编译我的代码时,在 C/C++ 代码到机器代码/目标文件之间没有“汇编/汇编”阶段,如果我想查看汇编代码,我需要要求 Visual Studio 将其从目标文件反汇编为程序集。

所以我的问题是:

  1. 我说的对,除了反汇编就没有办法看到asm了吗?

  2. (如果 1 为否):为什么 Visual Studio 的调试器显示“反汇编”选项,而不是“汇编”?

  3. Clang/GCC 是否有汇编阶段,或者 C/C++ 代码是否直接编译为目标代码?


编者按:对于 GCC 与大多数其他主流 C/C++ 编译器(如 clang/LLVM 和 MSVC),3 的答案实际上有所不同。由于这是与 MSVC 的工作方式不同的问题,因此该部分是这些其他 SO Q&A 的副本:

c++ compiler-construction assembly gcc visual-studio

0
推荐指数
1
解决办法
228
查看次数