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

时间:2014-07-25 04:35:11

标签: assembly machine-code object-code

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

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

提前致谢。

4 个答案:

答案 0 :(得分:9)

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

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

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

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

答案 1 :(得分:5)

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

  • 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

答案 2 :(得分:2)

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

了解更多here

干杯!!

答案 3 :(得分:0)

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