相关疑难解决方法(0)

C++代码是否编译为汇编代码?

C++代码是否编译为汇编代码?如果我们有C++代码,我们能获得汇编代码吗?

c++ assembly compilation

16
推荐指数
3
解决办法
2万
查看次数

编译器是否总是生成汇编代码?

来自C++中的思考 - 第1卷:

在第二遍中,代码生成器遍历解析树并为树的节点生成汇编语言代码机器代码.

至少在GCC中,如果我们给出生成汇编代码的选项,编译器会通过创建包含汇编代码的文件来服从.但是,当我们只是在gcc没有任何选项的情况下运行命令时,它是否在内部不生成汇编代码?

如果是,那么为什么需要首先生成汇编代码然后将其转换为机器语言?

compiler-construction assembly gcc

6
推荐指数
1
解决办法
2604
查看次数

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
查看次数