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

问题描述 投票:0回答:4

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

那么问题是,汇编语言在哪里以及如何转换为机器代码?是由操作系统中集成的某种编译器实现的吗?

assembly machine-code object-code
4个回答
11
投票

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

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

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

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


6
投票

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

  • MOV AX,[A]; # 将 A 移动到寄存器 Ax
  • 添加AX,[B]; # 将 B 添加到 A
  • IMUL 斧头; # 正方形(A+B)
  • MOV [C],AX;

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

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

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

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


2
投票

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

阅读更多这里


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.