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

本文总结了《信息安全系统设计基础》第五周的学习内容,包括X86寻址的三个时代、gcc编译器的编译选项、源代码转化为可执行代码的过程、MOV指令的应用、算数逻辑操作符及控制流指令等关键知识点。

20145224 《信息安全系统设计基础》第五周学习总结

教材学习内容总结

3.1 历史观点

·X86寻址的三个时代:

1、DOS时代的平坦模式,不区分用户空间和内核空间,很不安全;
2、8086的分段模式;
3、IA32的带保护模式的平坦模式。

3.2 程序编码

·gcc编译器的编译选项:

-01 第一级优化 (多作为学习工具);
-02 第二级优化 (所得到的程序性能更优);
提高优化级别会使最终程序运行得更快,但编译时间也要更长,用调试工具对代码进行调试会更加困难。

·源代码转化为可执行代码:

C预处理器扩展源代码;(gcc -E hello.c -o hello.i)
编译器产生汇编代码;(gcc -S hello.i -o hello.s)
汇编器将汇编代码转换成二进制目标代码;(gcc -c hello.s -o hello.o)
链接器将目标代码文件与现实库函数的代码合并,产生最终的课执行文件。(gcc hello.o -o hello)

3.4访问信息

·操作数的三种类型:立即数、寄存器、存储器;
·MOV指令:将原操作数的值复制到目的操作数中;(不能够从存储器传送到存储器)

3.5 算数和逻辑操作

·加载有效地址:leal的指令形式是从存储器读数据到寄存器。但该指令并不是从指定位置读入数据,而是将有效地址写入到目的操作数。
·一元操作:

INC(自增1)
DEC(自减1)
NEG(取负)
NOT(取补)

·二元操作:

ADD(加)
SUB(减)
IMUL(乘)
XOR(异或)
OR(或)
AND(与)

·移位操作:

SAL(左移)
SHL(左移)
SAR(算数右移)
SHR(逻辑右移)

3.6 控制

·两种实现条件行为的低级机制:测试数据,然后根据测试的结果来改变控制流或者数据流;
·jump指令可以改变一组机器代码指令的执行顺序;
·leal指令不会改变任何条件码;
·CMPTEST只设置条件码而不改变任何其他寄存器;

代码调试中的问题和解决过程

我安装的是64位的Ubuntu程序,但他并不能使用-m32生成32位文件:
886809-20161016221308514-2038900724.png
所生成的32位文件里面是空的:
886809-20161016221331342-1472983939.png
系统也不支持-01的编译选项,使用gcc -S code.c指令生成文件如下:
886809-20161016221324420-1142641972.png
二进制的机器码使用od打开:
886809-20161016221339045-723644077.png
886809-20161016221413452-1682264079.png
反汇编的结果:
886809-20161016221425170-1500498531.png
886809-20161016221434702-1642199367.png
886809-20161016221448436-1314282275.png
886809-20161016221455405-1562022176.png

本周代码托管链接

https://git.oschina.net/Kevin_s/Linux_C.git
886809-20161016221612170-864361340.png

学习进度条

代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
目 标5000行30篇400小时
第一周200/2002/220/20
第二周300/5002/418/38
第三周500/10003/722/60
第四周300/13002/930/90

参考资料

转载于:https://www.cnblogs.com/20145224kevs/p/5967157.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值