2017-2018-1 20155227 《信息安全系统设计基础》第五周学习总结
2017-10-22 14:20
381 查看
2017-2018-1 20155227 《信息安全系统设计基础》第五周学习总结
教材学习内容总结
第三章
程序编码
ISA指令集体系结构(ISA)定义了处理器状态指令的格式,以及每条指令对状态的影响。
汇编命令与反汇编命令
用
gcc -S xxx.c -o xxx.s获得汇编代码,用
gcc -c code.c产生目标文件code.o(二进制文件,无法直接查看),用
objdump -d xxx.o反汇编可以查看目标代码文件内容。函数前两行汇编代码
pushl %ebp,movl %esp,
%ebp和后两行代码
popl %ebp,
ret所有函数都有,建立函数调用帧。
数据格式
不同数据的汇编代码后缀访问信息
操作数的三种类型立即数,即常数值 寄存器,表示某个寄存器的内容 存储器,根据计算出来的地址(有效地址)访问某个存储器位置。
有效地址的计算方式
Imm(Eb,Ei,s) = Imm + R[Eb] + R[Ei]*s
MOV
MOV相当于C语言的赋值“=”,不能从内存地址直接MOV到另一个内存地址,要用寄存器中转一下。
MOV类中的指令将源操作数的值复制到目的操作数中,源操作数指定的值是一个立即数,存储在寄存器或存储器中,目的操作数指定一个位置,要么是一个寄存器,要么是一个存储器地址。
局部变量
局部变量通常是保存在寄存器中。因为,寄存器访问比存储器访问要快得多。
算术和逻辑操作
一元和二元操作
一元操作:只有一个操作数,既是源又是目的,可以是一个寄存器,或者存储器位置。
二元操作:第一个操作数可以是立即数、寄存器或者存储器位置;第二个操作数既是源也是又是目的,可以是寄存器或者存储器位置,但是不能同时是存储器位置。
操作的顺序:
第二个操作数 操作符 第一个操作数
控制
条件码```
CF:进位标志
ZF:零标志
SF:符号标志
OF:溢出标志
```
循环(while, for)
C语言do-while循环:
do body-statement while(test-expr);
汇编实现形式:
loop: body-statement t = test-expr; if(t) goto loop;
过程
IA32IA32利用程序栈来支持过程调用(包括将数据和控制)。为单个过程分配的那部分栈做栈帧。最底端(地址最大)%ebp为帧指针;最顶端(地址最小)%esp为栈指针。
call指令的效果是将返回地址入栈,并跳转到被调用过程的起始处。返回地址是在程序中紧跟在call后面的那条指令的地址。目标是指明被调用过程起始的指令地址。
ret指令从栈中弹出地址,并跳转到这个位置。栈指针要指向前面call指令存储返回地址的位置
异质的数据结构
C语言的struct声明创建一个数据类型,将可能不同类型的对象聚合到一个对象中。结构的所有组成部分都存放在一段连续区域内,结构的指针就是结构第一个字节的地址。
数据对齐
对于大多数x86-64指令来说,保持数据对齐能够提高效率,但是它不会影响程序的行为。教材学习中的问题和解决过程
无代码调试中的问题和解决过程
问题1:在64位机器上产生32位汇编代码时出现以下问题:
解决方法是在终端输入如下命令:
sudo apt-get install libc6-dev-i386,安装一个库。
但又出现以下问题:
E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用) E: 无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它?
解决方法如下:
1.终端输入
ps -aux,列出进程。找到含有
apt‘-get的进程,直接
sudo kill PID。解决。
2.强制解锁,命令:
sudo rm/var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
代码托管
(statistics.sh脚本的运行结果截图)上周考试错题总结
错题1针对以上代码:gcc -c *.c 可以得到m.o,swap.o两个模块,哪些符号会出现在swap.o模块的.symtab条目中()
A . buf B . temp C . swap D . buffp0
正确答案: A C D
理解:temp是局部变量,不出现在符号表中。
错题2
dll,so文件的链接是运行在()
A . 编译时 B . 加载时 C . 运行时 D . 链接时
正确答案: C
...
结对及互评
点评模板:
博客中值得学习的或问题:xxx
xxx
...
代码中值得学习的或问题:
xxx
xxx
...
其他
本周结对学习情况
-[20155318](http://www.cnblogs.com/lxy1997/) - 结对照片 - 结对学习内容 - 教材第三章内容 - XXXX - ...
其他(感悟、思考等,可选)
本周学习的内容很多,知识点有的是上学期汇编学过的,但都有所遗忘,所以学起来还是有点吃力。学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 133/133 | 1/1 | 8/8 | |
第三周 | 159/292 | 1/3 | 10/18 | |
第五周 | 121/413 | 1/5 | 10/28 |
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
参考:软件工程软件的估计为什么这么难,软件工程 估计方法
计划学习时间:15小时
实际学习时间:10小时
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)
参考资料
《深入理解计算机系统V3》学习指导...
相关文章推荐
- 2017-2018-1 20155230 《信息安全系统设计基础》第五周学习总结
- 2017-2018-1 20155310 《信息安全系统设计基础》第五周学习总结
- 2017-2018-1 20155317 《信息安全系统设计基础》第五周学习总结
- 2017-2018-1 20155303 《信息安全系统设计基础》第五周学习总结
- 2017-2018-5 0155327 《信息安全系统设计基础》第五周学习总结
- 2017-2018-1 20155216 《信息安全系统设计基础》第五周学习总结
- 2017-2018-1 20155217 《信息安全系统设计基础》第五周学习总结
- 20155325 2017-2018-1 《信息安全系统设计基础》第五周学习总结
- 2017-2018-1 20155320 《信息安全系统设计基础》第五周学习总结
- 2017-2018-1 20155304 《信息安全系统设计基础》第五周学习总结
- 2017-2018-1 20155229 《信息安全系统设计基础》第五周学习总结
- 2017-2018-1 20155233 《信息安全系统设计基础》第五周学习总结
- 2017-2018-1 20155333 《信息安全系统设计基础》第五周学习总结
- 2017-2018-1 20155227 《信息安全系统设计基础》第四周学习总结
- 2017-2018-1 20155227 《信息安全系统设计基础》第八周学习总结
- 2017-2018-20155206 《信息安全系统设计基础》第五周学习总结
- 2017-2018-1 20155234《信息安全系统设计基础》第五周学习总结
- 2017-2018-1 20155228 《信息安全系统设计基础》第五周学习总结
- 2017-2018-1 20155227 《信息安全系统设计基础》第十一周学习总结
- 2017-2018-1 20155220 《信息安全系统设计基础》第五周学习总结