8

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

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

提前致谢。

4

4 回答 4

11

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

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

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

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

于 2014-07-25T05:59:43.887 回答
6

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

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

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

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

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

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

于 2015-07-08T03:26:13.230 回答
2

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

在这里阅读更多

干杯!!

于 2014-07-25T04:47:35.237 回答
0

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

于 2014-07-25T04:46:36.127 回答