20145216史婧瑶《信息安全系统设计基础》第5周学习总结
2016-10-16 21:32
591 查看
20145216史婧瑶《信息安全系统设计基础》第5周学习总结
教材内容总结
X86 寻址方式经历三代:1 DOS时代的平坦模式,不区分用户空间和内核空间,很不安全 2 8086的分段模式 3 IA32的带保护模式的平坦模式
ISA(指令集体系结构):机器级程序的格式和行为,定义了处理器状态、指令的格式,以及每条指令对状态的影响
gcc -S xxx.c -o xxx.s 获得汇编代码,也可以用objdump -d xxx 反汇编
注意:64位机器上想要得到32代码:gcc -m32 -S xxx.c MAC OS中没有objdump, 有个基本等价的命令otool
二进制文件可以用od 命令查看,也可以用gdb的x命令查看。 有些输出内容过多,我们可以使用 more或less命令结合管道查看,也可以使用输出重定向来查看,如:
od code.o | more od code.o > code.txt
gcc -S 产生的汇编中以”.“开始的语句是指导汇编器和链接器的命令,可以删除了再阅读
esi edi可以用来操纵数组,esp ebp用来操纵栈帧
操作数的三种类型:立即数、寄存器、存储器
有效地址的计算方式 Imm(Eb,Ei,s) = Imm + R[Eb] + R[Ei]*s
MOV相当于C语言的赋值“=”(注意不能从内存地址直接MOV到另一个内存地址,要用寄存器中转一下)
栈:“后进先出”,栈顶元素的地址是所有栈中元素地址中最低的
指针就是地址;局部变量保存在寄存器中
移位操作中移位量可以是立即数或%cl中的数
leal不改变条件码寄存器
SET指令根据t=a-b的结果设置条件码
call/ret; 函数返回值存在%eax中
思考题总结:
不同数据的汇编代码后缀:C声明 Intel数据类型 汇编代码后缀 大小(字节) char 字节 b 1 short 字 w 2 int 双字 l 4 long int 双字 l 4
MOV、MOVS、MOVZ区别:
MOV:传送 MOVS:传送符号扩展的字节 MOVZ:传送零扩展的字节
栈通过push操作把数据压入栈中,通过pop操作删除数据
CMP和SUB的异同之处:CMP根据两个操作数只差设置条件码,但是不更新目标寄存器;SUB根据两个操作数之差更新寄存器
学习中遇到的问题
1、练习3.15中第E个问题没有理解2、练习3.23中for循环的执行语句我做的答案是val=(2*val)|(x&ox1);x>>1,参考答案是val=(val<<1)|(x&ox1);x>>=1,结果不一样
解决方案:对于第一个不同之处,我检查了很多遍自己写的步骤,并没有发现任何错误,在写博客整理问题的时候我突然想到二进制中左移一位相当于该数乘以2,所以我的答案也是正确的;而第二个不一样的地方,我通过上网百度,明白了>>与>>=的差别:>>是右移运算符,只进行计算,不改变x的值;>>=是右移赋值符,进行右移运算后把计算的结果赋值给x。
3、练习3.29中switch语句体内情况标号的值不知道应该怎么确定
实验楼练习
代码托管截图
实验楼l链接:
https://git.oschina.net/sjy519/linux-program-C/tree/master
其他(感悟、思考等,可选)
本周学习了程序的机器级表示,感觉很难,看书上的练习题时,总是不知道怎么做,答案也没有解释,就通过问同学或者上网查找资料解决,但仍然有问题没有弄明白,现在才感觉到上学期的汇编没有学好,没有为这门课打好基础,以后只能花更多的时间来好好学习这门课。学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 3000行 | 30篇 | 300小时 | |
第一周 | 0/0 | 1/2 | 25/40 | 学习了Linux基础知识和核心命令 |
第二周 | 0/0 | 0/2 | 0/40 | |
第三周 | 300/300 | 3/5 | 40/80 | 学习了vim、gcc、gdb指令; 学习了信息表示和处理 |
第五周 | 200/500 | 1/6 | 45/125 | 学习了程序的机器级表示 |
相关文章推荐
- 20145216史婧瑶 《信息安全系统设计基础》第2周学习总结
- 20145216史婧瑶《信息安全系统设计基础》第九周学习总结
- 20145216史婧瑶《信息安全系统设计基础》第十一周学习总结
- 20145216史婧瑶《信息安全系统设计基础》第十二周学习总结
- 20145216史婧瑶《Java程序设计》第5周学习总结
- 20145216史婧瑶《信息安全系统设计基础》第3周学习总结
- 20145216 史婧瑶《信息安全系统设计基础》第一周学习总结
- 20145216史婧瑶《信息安全系统设计基础》第十周学习总结
- 20145216史婧瑶《信息安全系统设计基础》第6周学习总结
- 20145208 《信息安全系统设计基础》第5周学习总结
- 20145216史婧瑶《Java程序设计》第9周学习总结
- 20145336张子扬 《信息安全系统设计基础》第5周学习总结(一)
- 20145307陈俊达《信息安全系统设计基础》第5周学习总结PT1
- 20145303 《信息安全系统设计基础》第5周学习总结(1)
- 20145207 《信息安全系统设计基础》第5周学习总结
- 20145209 《信息安全系统设计基础》第5周学习总结
- 20145322 《信息安全系统设计基础》第5周学习总结
- 20145209 《信息安全系统设计基础》第5周学习总结
- 20145216史婧瑶《Java程序设计》第3周学习总结