20145228 《信息安全系统设计基础》第五周学习总结 (1)

教材学习内容总结

部分知识点

•ISA:定义了处理器状态,指令的格式,每条指令对状态的影响。

  gcc -O1 -S text.c

•寻址方式经历的三代

1 DOS时代的平坦模式,不区分用户空间和内核空间,很不安全

2 8086的分段模式

3 IA32的带保护模式的平坦模式

寄存器

•程序计数器(在IA32中,通常称为“PC”,用%eip表示)

指示将要执行的下一条指令在存储器中的地址。

•整数寄存器

包含8个命名的位置,分别存储32位的数值,这些寄存器可以存储地址(对应C语言的指针)或整数数据,有的寄存器被用来记录某些重要的程序状态,其他的寄存器用来保存临时数据,例如过程的局部变量和函数的返回值。

•条码寄存器

保存着最近执行的算术或逻辑指令的状态信息,他们用来实现控制或数据流中的条件变化。

•浮点寄存器

一组浮点寄存器存放浮点数据

•8位寄存器有: AH、AL、BH、BL、CH、CL、DH和DL等;

•16位寄存器有:AX、BX、CX、DX、SI、DI、SP、BP和段寄存器等;

•32位寄存器有:EAX、EBX、ECX、EDX、ESI、EDI、ESP和EBP等。

内存中的变量存储的是其偏移地址

•esi edi可以用来操纵数组,esp ebp用来操纵栈帧。

寻址方式

操作数:立即数($9)、寄存器(%eax)、存储器

有效地址=立即数+基址寄存器的值+变址寄存器的值*比例因子

CMP和SUB

CMP是不会改变源操作数的减法,只是做比较之后改变标志位。

SUB是会改变源操作数的减法。

•64位机器上想要得到32代码:gcc -m32 -S xxx.c

部分代码截图

“-S”后可以得到C语言编译器产生的汇编代码

然后GCC开始运行编译,产生了汇编文件

感想

现在一周两篇博客,这一篇先将这周总的知识点大致了解到,后面一篇博客再将完整代码托管上去,深入学习并掌握各知识点。

参考资料

posted @ 2016-10-13 23:04  20145228江苒  阅读(139)  评论(0编辑  收藏  举报