繁体   English   中英

什么将汇编语言转换为机器代码

[英]What converts Assembly language to machine code

我是编程新手,我从C ++语言开始,据我所知,C ++编译器将C ++语言转换为汇编语言(例如:Visual Studio),但我试着查找将汇编语言转换为机器代码的内容。由计算机理解和执行,但我找不到答案。

所以问题是汇编语言在何处以及如何转换为机器码? 它是由OS中集成的某种编译器吗?

提前致谢。

一些编译器(如GNU)将C / C ++代码转换为汇编代码。 名为“assembler”的工具将汇编代码转换为机器代码,名为“linker”的工具将多个机器代码文件连接成一个可执行文件(Windows下的.EXE)。 大多数这些编译器允许您将生成的汇编程序代码写入文件,以便您可以查看汇编代码或修改它。

汇编器和链接器是工具链的一部分,这意味着它们通常与编译器一起提供。

然而,一些编译器(如Microsoft)直接将C / C ++代码转换为机器语言,因此不再需要汇编程序。 其中许多编译器无法创建汇编代码,因此您无法将汇编代码编写到文件中。

顺便说一句:甚至有编译器(不是C / C ++,但是对于其他编程语言)直接创建.EXE文件,因此不需要链接器。

当编译器将高级代码转换为汇编语言时,如下所示 -

  • MOV AX,[A]; #将A移动到注册Ax
  • ADD AX,[B]; #将B添加到A.
  • IMUL AX; #Square(A + B)
  • MOV [C],AX;

汇编程序将这些汇编指令转换为机器代码。

汇编指令的典型形式如下:操作码操作数[操作数]

如果查看微处理器手册,您将了解每条指令如何转换为1001000等二进制形式。有些位用于操作码,有些用于操作数。

http://www.mathemainzel.info/files/x86asmref.html

汇编语言由称为汇编程序的实用程序转换为可执行机器代码; 转换过程称为汇编或汇编代码。

在这里阅读更多

干杯!!

汇编代码具有类似的转换为对象/机器代码的过程,因为它通过称为汇编程序的东西运行(类似于给定示例中的编译器)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM