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

教材学习内容总结

·IA32利用程序栈来支持过程调用(包括将数据和控制)。为单个过程分配的那部分栈做栈帧。最底端(地址最大)%ebp为帧指针;最顶端(地址最小)%esp为栈指针。当程序执行时,栈指针可以移动

MOV语句

·MOV相当于C语言的赋值”=“,注意ATT格式中的方向, 另外不能从内存地址直接MOV到另一个内存地址,要用寄存器中转一下。

在IA32中规定不能从内存地址直接MOV到另一个内存地址,要用寄存器进行中转。其中,MOVS是符号扩展;MOVZ是零扩展。

1.MOV:将源操作数的值复制到目的操作数中;

2.MOVS:将一个较小的源数据复制到一个较大的数据位置,高位用位扩展;

3.MOVZ:将一个较小的源数据复制到一个较大的数据位置,高位用零扩展。

操作数的三种类型

1·立即数:不超过32位的数值

2·寄存器:用Ea表示任意寄存器a,R[Ea]表示它的值

3·存储器:会根据计算出来的地址访问某个内存,用M[addr]表示

部分练习代码截图

使用gcc -S -o timu.s timu.c -32命令编译成汇编代码

删除gcc产生代码中以"."开头的编译器指令

感悟

由于上学期没有学习过汇编语言,这几周还需要将汇编方面的基础知识学习了解,这样才能更高效地学好Linux.

本周代码托管

代码托管链接

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 4000行 25篇 350小时
第一周 0/ 0 2/2 20/30
第二周 100/100 1/3 20/50
第三周 300/400 1/4 20/70
第四周 0/400 0/4 0/70
第五周 300/700 2/6 20/90

参考资料

posted @ 2016-10-16 15:45  20145228江苒  阅读(138)  评论(1编辑  收藏  举报