通过计算机指令/程序的基本功能,我了解到我们用高级语言编写源代码。编译器将其转换为低级语言(机器代码/目标代码)。我还了解到 Assembler 将汇编语言转换为机器代码/目标代码。
那么我有以下疑问:
如果编译器直接将高级转换为低级,则从生成该汇编语言的位置。
如果转换过程必须通过汇编语言,即
高级语言====>汇编语言====>目标代码/机器代码,
那么是谁将这种高级语言转换为汇编语言,它有什么用呢?
最佳答案
这是一个非常普遍的问题(说实话也有点难以理解)。
高级语言的编译器可以将高级代码转换为汇编程序,而辅助实用程序可以将汇编程序转换为您所说的机器代码。编译器还可以直接生成机器代码。这两个选项都是有效的,由编译器的设计者来确定哪个是最合适的。
也就是说,汇编距成为“机器代码”只有一步之遥,因此能够读取它来确定编译器做了什么通常很有用。有时,这会带来一些见解,使人们能够优化高级代码;其他时候,1337 程序员可能会选择手动编辑程序集。因此,即使编译器看起来直接生成机器代码,但通常情况下它也可以生成汇编代码。
参见this SO answer了解更多详情。
关于assembly - 谁将高级语言转换为汇编语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41277108/