assembly - 谁将高级语言转换为汇编语言

标签 assembly compilation

通过计算机指令/程序的基本功能,我了解到我们用高级语言编写源代码。编译器将其转换为低级语言(机器代码/目标代码)。我还了解到 Assembler 将汇编语言转换为机器代码/目标代码。
那么我有以下疑问:

  1. 如果编译器直接将高级转换为低级,则从生成该汇编语言的位置。

  2. 如果转换过程必须通过汇编语言,即

高级语言====>汇编语言====>目标代码/机器代码,
那么是谁将这种高级语言转换为汇编语言,它有什么用呢?

最佳答案

这是一个非常普遍的问题(说实话也有点难以理解)。

高级语言的编译器可以将高级代码转换为汇编程序,而辅助实用程序可以将汇编程序转换为您所说的机器代码。编译器还可以直接生成机器代码。这两个选项都是有效的,由编译器的设计者来确定哪个是最合适的。

也就是说,汇编距成为“机器代码”只有一步之遥,因此能够读取它来确定编译器做了什么通常很有用。有时,这会带来一些见解,使人们能够优化高级代码;其他时候,1337 程序员可能会选择手动编辑程序集。因此,即使编译器看起来直接生成机器代码,但通常情况下它也可以生成汇编代码。

参见this SO answer了解更多详情。

关于assembly - 谁将高级语言转换为汇编语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41277108/

相关文章:

c++ - 调查 visual studio 程序集输出

c - 在 C 中执行 ASM call/ret

pointers - 如何获取变量的地址并在 nasm x86 程序集中取消引用它?

集会。反转词

runtime - 编译时、加载时、运行时 : phases of. .. 什么?

javascript - angularjs 指令缓慢的 dom 操作

assembly - 如何在不使用 LUI 的情况下将 32 位常量加载到寄存器

c - 可执行文件在编译机上运行,​​而不是在第二台机器上运行

c++ - 将 libxml++ 和 glib 库与适用于 C++ Windows 的 CodeBlocks IDE 链接的问题

c# - 编译时如何生成代码?