程序是怎样跑起来的(第十章)

前面多次讲过,计算机的CPU能够直接解释执行的只有本机代码。因此,查看本机代码就可以看到程序最终在运行时变成了什么样子。人们发明了一种方法,为每个本机代码的指令分配一个英语缩写来表示其功能。这些缩写称为助记符,使用助记符的编程语言称为汇编语言。查看用汇编语言编写的源代码,我们也能了解程序的真面目,因为他与本机代码是等价的。即使是用汇编语言编写的源代码,最终也必须转换成为本机代码才能运行,用来完成这种转换的程序称为汇编器,这个转换的过程成为汇编。具有这种反向转换功能的程序称为反汇编器,这种反向转换的过程称为反汇编。用C语言编写的源代码,在编译之后也会转换成适配特定CPU的本机代码。在对本机代码进行反汇编,我们就可以得到汇编语言源代码,从而可以查看其内容。
伪指令和注释。汇编语言源代码的指令分为两种,一种是会被转换成本机代码的一般指令,另一种是专门针对汇编器的伪指令。伪指令负责告诉汇编器程序的结构和汇编的方法,因此也被称为汇编程序指令。在属性的部分中,X表示可执行,R表示可读,w表示可写。在汇编语言源代码中,以#开头的部分表示注释。汇编语言指令的语法是"操作码操作数",其中操作码表示指令的动作,操作数表示指令的操作对象。寄存器是CPU内部的存储空间,但是寄存器的功能并不仅限于存储指令和数据,寄存器还可以参与运算。用于向寄存器和内存存放数据的MOVL指令可以说是最常用的指令。
C语言中的变量分为两种,在函数外部声明的变量称为全局变量,在函数内部声明的变量称为局部变量。全局变量可以在程序的所有函数中访问,而局部变量只能在声明它的函数中访问。分支条件的工作原理也是通过比较指令和跳转指令来实现的。C语言中的for循环在计算机内部就是这样通过比较指令和跳转指令来实现的,C语言中的if条件分支在条计算机内部就是这样通过比较指令和跳转指令来实现的。

posted @ 2024-02-27 23:55  侯岩含  阅读(2)  评论(0编辑  收藏  举报