通过汇编语言了解程序内部

本地代码不易理解,因而产生了一种想法,在各本地代码中附带表示其功能的英语单词缩写
例如,加法运算的本地代码中加add,这些缩写称为助记符,使用助记符的编程语言叫做汇编语言。但是即使是汇编语言,最终也需要转换成本地代码才能运行

负责转换工作的程序称为汇编器;转换这一处理称为汇编。

在将源代码转换成本地代码这个功能方面,汇编器和编译器是同样的。
用汇编语言编写的源代码,和本地代码一一对应。所以本地代码也可以转换成编程语言的源代码。 这个程序称为反汇编程序,这个处理为反汇编。

除了反汇编,还有其他方法得到汇编语言的源代码
比如:大部分C语言编译器,都可以利用C语言编写的源代码转换成汇编语言的源代码。编译器生成汇编语言的源代码。

汇编语言的源代码由两部分组成;(1)转换成本地代码的指令 (2)针对汇编器的伪指令

伪指令负责把程序的构造和汇编方法指示给汇编器。伪指令自身无法汇编转换成本地代码。
由伪指令segment和ends围起来的部分,是给构成程序的命令和数据的集合体加上一个名字得到的,称为段定义。 一个程序由多个段定义构成。

汇编语言中,1行表示对CPU的一个指令。 汇编语言的语法结构是“操作码+操作数”

操作码表示的是指令动作,操作数表示的是指令对象。 操作码和操作数罗列在一起的语法就是一个英文的指令文本。 操作码是动词 操作数是宾语
例如:Give me money Give是操作码 me和money是操作数
汇编语言中,存在多个操作数时,用逗号隔开。

使用何种形式的操作码,由CPU的种类决定。
本地代码加载到内存中才能运行,内存中存储着构成本地代码的指令和数据。
程序运行时,CPU会从内存中把指令和数据读出,然后将其存储在CPU的寄存器处理。
寄存器功能:存储 运算
指令中最常用的是对寄存器和内存进行数据存储的mov指令
mov指令的两个操作数,分别用来指定数据的存储地和读出源。
如果指定了【】围起来的内容,【】中的值就会被解释为内存地址;如果指定没有【】,则对该值进行处理。
对栈进行push和pop
栈通过push存储,pop读出
C语言中,函数外部定义的变量为全局变量。内部为局部变量
全局变量可以参阅源代码的任意部分,局部变量只能在定义该变量的函数参阅。

posted @ 2024-02-24 13:31  狂暴之刃  阅读(4)  评论(0编辑  收藏  举报