您的位置:首页 > 其它

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

2016-10-16 20:05 267 查看

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

教材学习内容总结


汇编代码是与特定机器密切相关的
Intel处理器俗称x86
指令集体系结构(ISA):定义了机器级程序的格式和行为以及每条指令对状态的影响
反汇编器只是基于机器代码文件中的字节序列来确定汇编代码,它不需要访问程序的源代码或汇编代码
ATT格式的汇编代码是GCC、OBJDUMP和其他一些我们使用的工具的默认格式
字:16bit(2byte) 双字:32bit(4字节)
双字:int、long int、char
单精度(float):4字节 双精度(double):8字节
MOVS、MOVZ指令都是讲一个较小的数据源复制到一个较大的数据位置,高位用符号位扩展或者零扩展
栈都是以“双字”进行操作的,压栈栈指针减小,弹栈栈指针增大
leal指令:从存储器读取数据到寄存器,是将有效地址写入到目的操作数(不改变任何条件码)
CMP:与sub指令相似,但只设置条件码二不改变目的寄存器的值
TEST:与AND指令相似,但只设置条件码二不改变目的寄存器的值
无符号比较使用的是进位标志和零标志的组合
jmp是无条件跳转,可以是直接,也可以是间接跳转;条件跳转只能是直接跳转
栈帧结构:机器用栈来传递过程参数、存储返回信息、保存寄存器用于以后恢复,以及本地存储
为单个过程分配的那部分栈称为栈帧,寄存器%ebp为帧指针,%esp为栈指针
call指令:将返回地址入栈,并跳转到被调用过程的起始处,返回地址是在程序中紧跟在call后面的那条指令的地址
ret指令从栈中弹出地址,并跳转到这个位置
寄存器%eax、%edx、%ecx被划分为调用者保存寄存器,寄存器%ebx、%esi、%edi被划分为被调用者保存寄存器
leave指令的使用在返回前,既重置了栈指针,也重置了帧指针

转移控制:

call指令:call指令有一个目标,即指明被调用过程起始的指令地址; call指令的效果是将返回地址入栈。并跳转到被调用过程的起始处。

ret指令:ret指从栈中弹出地址,并跳转到这个位置;ret指令返回到call指令后的那条指令。

leave指令:leave指令可以使栈做好返回的准备




教材学习中的问题和解决过程

实验楼代码汇编:



代码调试中的问题和解决过程

反汇编





c的汇编代码



本周代码托管

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


这周的主要学习任务就是汇编语言,其实在学习这一章的时候跟上学期的有些知识还是会联系起来,理解起来也没有那么困难, 但是感觉汇编语言还是不利于阅读,比较难于理解它想实现的功能,不像高级语言,可以简明地读懂它的意思,但也正是因为这样 ,汇编语言才能够更好地反映一条条指令是如何执行的,从而发现一些细节



学习进度条

代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
目标5000行30篇400小时
第一周100/1001/220/20
第二周150/2002/418/38
第三周200/2501/522/60
第五周50/3001/630/90

参考资料

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

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