心得:了解了计算机和程序的实际运行方式
知识点:
1、汇编语言
在各本地代码中,附带上表示其功能的英语单词缩写,这些缩写称为助记符。使用助记符的编程语言称为汇编语言。汇编语言的源代码转换成本地代码的方式,称为汇编。负责转换工作的程序称为汇编器。
2、获得汇编语言源代码的方法
①将本地代码进行反汇编:本地代码转换成汇编语言的源代码的方式,称为反汇编。持有该功能的逆变换程序,称为反汇编程序
②通过编译器
3、伪指令
汇编语言的源代码是由转换成本地代码的指令和针对汇编器的伪指令构成的。伪指令负责把程序的构造及汇编的方法指示给汇编器(转换程序),不过为指令本身是无法汇编转换成本地代码的。段定义指的是命令和数据等程序的集合体的意思。一个程序由多个段定义构成
4、汇编语言的语法
汇编语言指令的语法结构是操作码+操作数(也存在只有操作码没有操作数的指令)。操作码表示的是指令动作,操作数表示的是指令对象。能够使用何种形式的操作码是由CPU的种类决定的。本地代码加载到内存后才能运行。寄存器是CPU中的存储区域,不过寄存器并不仅仅具有存储指令和数据的功能,也有运算功能
5、mov指令
即可以对寄存器和内存进行数据存储的指令。mov指令的两个操作数分别用来指定数据的存储地和读出源,操作数中可以指定寄存器、常数、标签(附加在地址前)以及用方括号([])括起来的这些内容
6、push和pop:栈是存储临时数据的区域,它的特点是通过push指令和pop指令进行数据的存储和读出,push指令和pop指令中只有一个操作数。push指令和pop指令必须以四字节为单位对数据进行入栈和出栈处理
7、最优化功能是编译器在本地代码上费尽功夫实现的,其目的是让编译后的程序运行速度更快,文件更小
8、函数的参数是通过栈来传递返回值,是通过寄存器来返回的
9、C语言中在函数外部定义的变量称为全局变量;在函数内部定义的变量称为局部变量。全局变量可以在源代码的任意部分被引用,局部变量则只能在定义该变量的函数内进行引用。局部变量是临时保存在寄存器和栈中的
10、标签表示的是相对于段定义起始位置的位置。
11、标志寄存器的值,程序是无法直接参考的。实际上汇编语言中有多个跳转指令,这些跳转指令会根据标志寄存器的值来判定是否需要跳转。跳转指令:例,如果小于或等于则跳转的jle;如果大于或等于则跳转的 jge;不管结果怎样都无法跳转的jmp等。
12、“线程”是操作系统分配给CPU的最小运行单位,源代码的一个函数就相当于一个线程,多线程处理指的是在一个程序中同时运行多个函数的意思
13、······