您的位置:首页 > 其它

2017-2018-1 20155304 《信息安全系统设计基础》第五周学习总结

2017-10-22 14:40 357 查看

2017-2018-1 20155304 《信息安全系统设计基础》第五周学习总结

教材学习内容总结

机器级代码

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

机器级程序使用的存储器地址是虚拟地址,提供的存储器模型看上去是一个非常大的字节数组。

操作系统负责管理虚拟地址空间,将虚拟地址翻译成实际处理器存储器中的物理地址。

用objdump -d xxx.o -o xxx.s 反汇编



Ltme

1.三种操作数:

立即数:常数值。表示为$c标准表示的整数。

寄存器:表示某个寄存器的内容。

存储器:根据计算出来的地址访问某个存储器位置

2.数据传送指令

栈的特点

a、 遵循“后进先出”的原则b、 push压栈,pop出栈c、 栈顶:总是从这端插入和删除元素d、 栈顶元素的地址是最低的e、 栈指针%esp保存着栈顶元素的地址

3.数据传送示例

局部变量通常保存在寄存器中;寄存器访问比存储器访问要快的多。

过程

栈帧结构

机器用栈来传递过程参数、存储返回信息、保存寄存器用于以后恢复,以及本地存储。为单个过程分配的那部分栈称为栈帧。 最顶端的栈帧以两个指针界定,寄存器%ebp为帧指针,寄存器%esp为栈指针。

2.转移控制

call指令

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

ret指令

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

leave指令

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

movl %ebp,%esp popl %ebp

3.寄存器使用惯例

程序寄存器组是唯一能被所有过程共享的资源。惯例是为了防止一个过程P调用另一个过程Q时寄存器中的值被覆盖

保存某值的两种方式

①由调用者保存。在调用之前就压进栈。

②由被调用者保存,在刚被调用的时候就压进栈,并在返回之前恢复。

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

练习题3.34:根据GCC产生的汇编代码,填写补充C源代码:

int rfun(unsigned x){
if (x==0)
return 0;
unsigned nx = x>>1;
int rv = rfun(nx);
return (x&0x1)+rv;
}

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



学习进度条

代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
目标5000行30篇400小时
第一周47/1001/110/10
第二周180/2001/110/10
第三周200/3001/110/10
第五周190/3001/110/10

参考资料

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

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