2017-2018-1 20155332 《信息安全系统设计基础》第五周学习总结
教材学习内容总结
一. 信息的储存
- 1.运用gcc -O1 -S code.c得到C编译器产生的代码
- 2.运用gcc -O1 -c code.c将编译并汇编该代码得到二进制文件code.o
- 3.运用objdump -d code.o可以实现反汇编
- 4.以'.'开头的行都是知道汇编器和链接器的命令。
- 指令集体系结构(ISA):定义了机器级程序的格式和行为。大多说ISA将程序行为描述为好像每条指令都是按顺序执行。
- 机器级程序使用的内存地址是虚拟地址,内存模型是一个非常大的字节数组。
教材学习中的问题和解决过程
- 问题1:如何查看一个程序的汇编代码
问题1解决方案:
gcc -S -o main.s main.c -m32
cat main.s 可以查看汇编代码。
为了读懂汇编代码,要先搞清楚这些寄存器的作用。
lEAX、ECX、EDX、EBX寄存器的作用
EAX 是"累加器"(accumulator), 它是很多加法乘法指令的缺省寄存器。
EBX 是"基地址"(base)寄存器, 在内存寻址时存放基地址。
ECX 是计数器(counter), 是重复(REP)前缀指令和LOOP指令的内定计数器。
EDX 则总是被用来放整数除法产生的余数。
ESI/EDI分别叫做"源/目标索引寄存器"(source/destination index),因为在很多字符串操作指令中, DS:ESI指向源串,而ES:EDI指向目标串.
EBP是"基址指针"(BASE POINTER), 它最经常被用作高级语言函数调用的"框架指针"(frame pointer).
- 问题2: 如何查看一个程序的反汇编代码
问题2解决方案:
gcc -S xxx.c -o xxx.s
nblogs.com/blog/1071612/201710/1071612-20171024210717676-547052151.png)
获得反汇编代码!
-
问题3:操作数的格式
-
问题4:IA32数据格式:
Intel用术语“字”表示16位数据类型,因此,称32位数为“双字”,称64位数为“四字”
-
问题5:寄存器的理解
本周结对学习情况
- [20155324](http://www.cnblogs.com/wang5324/p/7616183.html)
- 结对照片 无
其他(感悟、思考等,可选)
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 2/2 | 20/20 | |
第二周 | 300/500 | 2/4 | 18/38 | |
第三周 | 500/1000 | 3/7 | 22/60 | |
第四周 | 300/1300 | 2/9 | 30/90 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
-
计划学习时间:XX小时
-
实际学习时间:XX小时
-
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)