20145222《信息安全系统设计基础》第四周学习总结
学习总结
1.寻址方式的发展
平坦模式->分段模式->带保护的平坦模式。
2.ISA的定义
机器级程序的格式和行为,定义为指令集体系结构,简称ISA。
3.反汇编指令
gcc -s xx.c -o xx.s
获得;gcc -m32 -s xx.c
从64位机器上得到32位的代码;otool -d xxx
可从mac os
上进行反汇编。
4. ATT和Intel格式的区别:
- 1)Intel代码省略练指示大小的后缀
- 2)Intel代码省略练寄存器名字前面的‘%’符号
- 3)Intel代码用不同的方式来描述存储器中位置
- 4)在带有多个操作数的指令情况下,列出操作数的顺序相反
5.操作数指示符
立即数,常数值,用Imm表示;寄存器,E表示寄存器,R[E]表示寄存器里的内容;存储器,M[Addr],根据算出的有效地址访问存储器的某个位置。
6.数据传送指令
- 1)mov传送 movs传送符号扩展的字节 movz传送零扩展的字节;
- 2)movs和movz将一个较小的源数据复制到一个较大到的位置,符号位扩展,高位用源值最高位填充,零扩展就用0填充高位;
- 3)不能从一个内存地址直接mov到另一个内存地址,要用寄存器中转;4)栈顶元素是最近被压入的元素,是所有栈中元素地址中最低的。
7.算术与逻辑运算
- 1)加载有效地址, leal指令;
- 2)一元运算(一个操作数,即是源又是目的);
- 3)二元运算(两个操作数,第一个是源,第二个是目的)。
- 注意:第一个可以是立即数,寄存器,存储器;第二个可以是寄存器,存储器;两个不可以同时为存储器。
8.条件码
CMP只设置条件码而不更新目标寄存器,可以用于条件判断上,sub可以用作简单的算术运算。
9.set类指令
根据条件码的某些组合,将一个字节设置为0或者是1。各个set类指令都适用的情况是——执行比较指令,根据t=a-b的结果设置条件码。
10.跳转指令
jmp:无条件跳转。后可接 跳转目标,或者从寄存器、存储位置中读出跳转目标。其他有条件跳转是根据条件码组合来控制的。