汇编语言和机器语言的联系

女刑警李春春2022-07-06  29

CPU全称是中央处理器,是计算机运行的核心。根据使用的技术不同,CPU分为X86、X64、ARM、DSP、MCU等不同架构。每个CPU都有一个特定的指令集,通常称为机器指令,直接用机器指令编写的程序就是机器语言程序。

理论上,任何程序都可以直接通过机器语言编写(早期的程序是直接用机器语言编写的,当时比较简单),编写的程序可以直接运行。但是用机器语言编程对程序员的要求极高,而且代码不可移植,不方便人们直接阅读,于是人们发明了一套符号来表示这些机器指令,这就是汇编语言。用汇编语言写的程序不能直接由计算机运行,一个叫汇编程序的程序需要转换成机器语言才能在特定的机器上运行。

C语言是比汇编语言更高级的语言,用C语言写的程序不能直接在计算机上运行。它需要编译器将C语言代码转换成机器语言,这个过程分为几个子步骤,如下图所示。

为了完善主语的问题,这里增加了两个概念,链接器和反汇编。

在大型程序中,任务往往被分解成许多不同的子任务,每个子任务对应一个源文件,这个源文件是若干个C语言的C文件。编译器将每个C文件编译成一个目标文件(在Windows和。Linux中的o)

文件),这些目标文件也是机器指令,但是缺少一些必要的信息,所以不能直接运行。你需要一个链接器来链接这些文件,加上一些库文件和可执行头文件信息,成为一个可执行文件(Windows是PE格式,Linux是ELF格式)。

通常,在查看二进制文件(目标文件或可行性文件)时,机器指令不是直接显示,而是用汇编语言显示。这是因为这个过程中有一个反汇编程序,将机器指令转换成汇编语言,其作用正好与汇编过程相反。

转载请注明原文地址:https://juke.outofmemory.cn/read/614614.html

最新回复(0)