20145203 《信息安全系统设计基础》第五周学习总结
2016-10-16 23:07
204 查看
20145203 《信息安全系统设计基础》第五周学习总结
教材学习内容总结
1、Intel处理器系列:俗称x86,开始时是第一代单芯片、16位微处理器之一。第一代是8086,也是汇编课程中学习的处理器型号。
每个后继处理器的设计都是后向兼容的,可以保证较早版本上编译的代码在较新的处理器上运行。
2、GCC将源代码转化为可执行代码的步骤:
C预处理器——扩展源代码-生成.i文件 编译器——产生两个源代码的汇编代码-——生成.s文件 汇编器——将汇编代码转化成二进制目标代码——生成.o文件 链接器——产生可执行代码文件
3、书中107页的代码体现了反汇编器的使用:
即可反汇编-d后的文件,查看目标代码文件的内容。
二进制文件可以用od 命令查看,也可以用gdb的x命令查看。 有些输出内容过多,我们可以使用 more或less命令结合管道查看,也可以使用输出重定向来查看。
4、机器代码和它的反汇编表示的一些特性:
IA32指令长度从1到15个字节不等
设计指令格式的方式是,从某个给定位置开始,可以将字节唯一的解码成机器指令
反汇编器只是基于机器代码文件中的字节序列来确定汇编代码,不需要访问程序的源代码或汇编代码
反汇编器使用的指令命名规则与GCC生成的汇编代码使用的有些差别
ATT和INTEL的汇编代码格式有所差别。
5、c语言基本数据类型对应的IA32表示
char 字节 1字节 short 字 2字节 int 双字 4字节 long int 双字 4字节 long long int (不支持) 4字节 char * 双字 4字节 float 单精度 4字节 double 双精度 8字节 long double 扩展精度 10/12字节
6、数据传送指令的三个变种:
movb 传送字节
movw 传送字
movl 传送双字
7、寻址方式
(1)立即数寻址方式
格式:$后加用标准c表示法表示的整数,如$0xAFF
(2)寄存器寻址方式
如%eax,与汇编中学过的AX寄存器类比。
(3)存储器寻址方式
直接寻址方式
寄存器间接寻址方式
寄存器相对寻址方式
基址变址寻址方式
相对基址变址寻址方式
8、关于栈
①堆栈
1.后进先出
2.栈指针指向栈顶元素
3.栈朝低地址方向增长
②压栈push
指令格式——PUSH r16/m16/seg
指令功能
第一步:SP←SP-2 ;堆栈指针SP上移
第二步:(SS):(SP)←r16/m16/seg ;字操作数存入堆栈顶部
注意 堆栈操作必须至少以字为单位,这时栈顶指针-2
如果压入的是双字,栈顶指针-4
3、出栈pop
指令格式——POP r16/m16/seg
指令功能
第一步:r16/m16/seg← (SS):(SP) ;栈顶的一个字传送到指定的目的操作数
第二步:SP←SP+2 ;堆栈指针SP下移,指向新的栈顶
栈顶指针变化同压栈。
9、 控制
一、条件码
CF:进位标志 ZF:零标志 SF:符号标志 OF:溢出标志
条件码的改变:
数据传送指令 MOV 不影响标志位 PUSH POP 不影响标志位 XCHG 交换指令 不影响标志位 XLAT 换码指令 不影响标志位 LEA 有效地址送寄存器指令 不影响标志位 PUSHF 标志进栈指令 不影响标志位 POPF 标志出栈指令 标志位由装入值决定 算术指令 ADD 加法指令 影响标志位 ADC 带进位加法指令 影响标志位 INC 加一指令 不影响CF,影响别的标志位 SUB 减法指令 影响标志位 SBB 带借位减法指令 影响标志位 DEC 减一指令 不影响CF,影响其他标志位 NEG 求补指令 影响标志位 只有操作数为0,例如字运算对-128求补,OF=1,其他时候OF=0 CMP 比较指令 做减法运算但不存储结果,根据结果设置条件标志位 MUL 无符号数乘法指令 IMUL 有符号数乘法指令 均对CF和OF位以外的条件码位无定义(即状态不定) DIV 无符号数除法指令 IDIV 带符号数除法指令 除法指令对所有条件码位均无定义 位操作指令: AND 逻辑与 OR 逻辑或 NOT 逻辑非 不影响标志位 XOR 异或 TEST 测试指令 除NOT外的四种,置CF、OF为0,AF无定义,SF,ZF,PF根据运算结果设置 移位指令: SHL 逻辑左移指令 SHR 逻辑右移指令 移位指令根据结果设置SF,ZF,PF位 ROL 循环左移指令 ROR 循环右移指令 循环移位指令不影响除CF,OF之外的其他条件位 串处理指令: MOVS 串传送指令 STOS 存入串指令 LODS 从串取指令 均不影响条件位 CMPS 串比较指令 SCAS 串扫描指令 均不保存结果,只根据结果设置条件码 控制转移指令: JMP 无条件转移指令 不影响条件码 所有条件转移指令 都不影响条件码 循环指令: 不影响条件码 子程序相关: CALL调用和RET返回 都不影响条件码
10、循环
汇编中可以用条件测试和跳转组合起来实现循环的效果,但是大多数汇编器中都要先将其他形式的循环转换成
本周学习体会
这次的很多内容都是在上学期的汇编的基础上进行的,虽然有些地方理解起来还是有些困难,但是与上一周的学习内容比起来还是相对比较轻松的。本周代码托管链接
代码链接学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 150/150 | 1/2 | 20/20 | |
第二周 | 200/350 | 1/2 | 24/44 | |
第三周 | 150/500 | 1/3 | 20/64 | |
第五周 | 300/800 | 1/4 | 15/79 |
参考资料
《深入理解计算机系统V2》学习指导...
相关文章推荐
- 20145203 《信息安全系统设计基础》第2周学习总结
- 20145240 《信息安全系统设计基础》第五周学习总结
- 20144303 《信息安全系统设计基础》第五周学习总结
- 20145203 《信息安全系统设计基础》第10周学习总结
- 20145316 《信息安全系统设计基础》第五周学习总结
- 20145203 《信息安全系统设计基础》第三周学习总结
- 20145317《信息安全系统设计基础》第五周学习总结2
- 20145335郝昊《信息安全系统设计基础》第五周学习总结
- 20145231《信息安全系统设计基础》第五周学习总结
- 《信息安全系统设计基础》 第五周学习总结
- 20145203 《信息安全系统设计基础》第九周学习总结
- 20145333 《信息安全系统设计基础》第五周学习总结(一)
- 20145337 《信息安全系统设计基础》第五周学习总结
- 20145213《信息安全系统设计基础》第五周学习总结上篇
- 20145203 《信息安全系统设计基础》第0周学习总结
- 20145324 《信息安全系统设计基础》第五周学习总结
- 20145304 《信息安全系统设计基础》第五周学习总结
- 20145327 《信息安全系统设计基础》第五周学习总结
- 20145203 《信息安全系统设计基础》第六周学习总结
- 20145333 《信息安全系统设计基础》第五周学习总结