您的位置:首页 > 其它

20145318 《信息安全系统设计基础》第5周学习总结

2016-10-16 21:20 176 查看

20145318 《信息安全系统设计基础》第5周学习总结

教材学习内容总结

寻址方式历史

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

8086的分段模式

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

程序编码

编译:gcc -01 -o p p1.c,-01:表示使用第一级优化。通常提高优化级别会使最终程序运行得更快,但是编译时间可能会变长,用调试工具对代码进行调试会更困难。(实际中,第二级优化-02被认为是较好的选择)

两种抽象:

指令集结构ISA:是机器级程序的格式和行为,定义了处理器状态、指令的格式,以及每条指令对状态的影响。

机器级程序使用的存储器地址是虚拟地址,看上去是一个非常大的字节数组,实际上是将多个硬件存储器和操作系统软件组合起来。

机器级代码

指令集体系结构(ISA):机器级程序的格式和行为,定义了处理器状态、指令的格式以及每条指令对状态的影响

虚拟地址:使用的存储器地址

程序计数器(PC):指示下一条指令在存储器中的地址

寄存器文件:8个命名的位置,分别存储32位的值,可以存储地址或整数数据

条件码寄存器:实现控制或数据流中的条件变化

浮点寄存器

栈帧结构

IA32用程序栈支持过程调用

机器用栈来传递过程参数、存储返回信息、保存寄存器用于以后恢复

栈帧:为单个过程分配的栈

%ebp为帧指针、%esp为栈指针,栈指针可以移动,大多数信息访问相对于帧指针

访问信息

一个IA32的中央处理器单元包含一组8个存储32位数值的寄存器。所有八个寄存器都可以作为16位(字)或32位(双字)来访问:

%esi,%edi可以用来操纵数组

%esp,%ebp用来操纵栈帧

可以独立访问前四个寄存器的两个低位字节(后向兼容)

32位的%eax,16位的%ax,8位的%ah,%al都是独立的

操作数三种类型:

立即数,即常数值

寄存器,表示某个寄存器的内容

存储器,根据计算出来的地址(有效地址)访问某个存储器位置

条件码

CF进位标志,检查无符号数的溢出

ZF零标志

SF符号标志

OF溢出标志

除了只设置条件码而不更新目标寄存器外,CMP与SUB行为相同,TEST与ADD行为相同

访问条件码

条件码使用方法:

根据条件码的组合,设置字节为0或1

条件跳转到程序其他部分

条件传送数据

SET指令的目的操作数是8个单字节寄存器元素之一或是存储一个字节的存储器位置

问题和解决过程

case的序号对应跳转表中的序号,从0开始。

本周代码托管截图



代码链接

其他(感悟、思考等,可选)

这一周是汇编语言,之前学过感觉比较熟悉。汇编是最接近计算机硬件的语言,了解后对掌握计算机程序运行等方面有提高。

也该多花时间学习了,学习带来的充实感是非常好的。

参考资料

《深入理解计算机系统V2》学习指导

...
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: