疑问:汇编器是怎么将汇编语言转换为机器码?
-
硬件层面:CPU只能理解机器码,也就是特定体系结构下的一系列二进制指令。
-
启动过程:当计算机启动时,CPU开始执行预定义位置(例如ROM或闪存)的一段引导程序,这段程序是直接用机器码写成的。引导程序负责加载操作系统内核到内存并跳转到内核的入口点。
-
操作系统与库:操作系统和许多底层库通常是用C或汇编语言编写的,并且已经被编译成了机器码。这些程序作为机器码存在于硬盘上的某个位置,并在需要时被加载到内存中执行。
-
编译工具链:汇编器、编译器等开发工具通常是由操作系统提供的,或者是安装在操作系统上的。这些工具本身也是程序,它们已经被编译成了机器码,并且在执行时,CPU可以直接读取并执行这些机器码。
-
用户级程序:用户编写的程序(包括汇编语言程序)在被编译或解释执行之前,都是以源代码的形式存在的。当这些程序通过编译器(如GCC)或解释器(如Python解释器)被处理时,编译器或解释器读取源代码,并生成机器码或字节码。
-
执行用户级程序:最终生成的机器码被加载到内存中,由CPU执行。
所以,尽管汇编器是一个复杂的软件,它也是以机器码的形式存在于系统中,并且在运行时被CPU直接执行。当使用汇编器来编译汇编语言程序时,实际上是操作系统加载并执行汇编器程序,然后汇编器再处理源代码,并输出机器码。在这个过程中,CPU始终只执行机器码。