将高级语言编译为机器代码

Kar*_* K. 10 c++ compiler-construction assembly machine-code

在从网站上阅读了一些答案并查看了一些资源后,我认为编译器会将高级语言(例如C++)转换为机器代码,因为计算机本身不需要将其转换为汇编,它只会转换它组装以供用户查看代码,并且可以根据需要对代码进行更多控制.

但这可以在我的一个演讲表中找到,所以如果有人能够进一步解释并纠正我,如果我错了,或者下面的截图,我会感激.

滑动

Bil*_*nch 22

你的幻灯片大多是错的......

程序集和机器代码之间存在一对一的映射.程序集是信息的文本表示,机器代码是二进制表示.

但是,某些机器支持附加的汇编指令,但生成的汇编代码中包含的指令仍然在编译时确定,而不是运行时.但一般来说,这取决于系统中的处理器(intel,amd,ti,nvidia等),而不是您购买整个系统的制造商.

  • "像东芝,戴尔或惠普这样的每台机器都有自己的机器代码blabla"(左侧)也是完整的bs. (7认同)

toh*_*ava 6

此幻灯片使字节码与文本汇编混淆.汇编是字节码或机器码的人类可读版本.机器代码是硬件可以直接运行的.字节码进一步编译为机器码,它是低级的,但是通用的.

有些语言使用字节代码,在运行时将其转换为更低级别的机器代码.其中一个例子是java,其中类文件有时会被编译为机器代码作为运行时优化.另一个是cuda,其中每个nvidia gpu都有不同的指令集,但cuda编译器生成字节码,然后每个gpu的cuda驱动程序可以转换.

另一个选择是他正在讨论英特尔处理器如何在运行时将机器代码转换为内部微代码然后运行它,这对软件来说是完全不可见的,包括操作系统.