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位文件:

所生成的32位文件里面是空的:

系统也不支持-01的编译选项,使用gcc -S code.c指令生成文件如下:

二进制的机器码使用od打开:


反汇编的结果:



本周代码托管链接

https://git.oschina.net/Kevin_s/Linux_C.git

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目 标 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

参考资料

  • 《深入理解计算机系统V2》学习指导
  • 程序的机器级表示 - 实验楼
  • ...

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

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

  1. 20155227 2016-2017-2 《Java程序设计》第九周学习总结

    20155227 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC简介 JDBC全名Java DataBase Connectivity,是java联 ...

  2. 20155303 2016-2017-2 《Java程序设计》第二周学习总结

    20155303 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 『注意』 "//"为单行批注符: "/*"与&quo ...

  3. 20155313 2016-2017-2 《Java程序设计》第二周学习总结

    20155313 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 1.1 基本类型 整数:可细分为short整数(占2字节).int整数(占4字节)与long ...

  4. 20165203 2017-2018-2 《Java程序设计》第一周学习总结

    20165203 2017-2018-2<Java程序设计>第一周学习总结 教材学习内容总结 (一)Java的地位 Java是面向对象编程,并涉及网络.多线程等重要的基础知识,是一门很好的 ...

  5. 20155229 2016-2007-2 《Java程序设计》第一周学习总结

    20155229 2016-2007-2 <Java程序设计>第一周学习总结 教材学习内容总结 1~18章的提问: 第一章:怎样撰写Java才不会沦于死背API文件.使用"复制. ...

  6. 20175227张雪莹 2018-2019-2 《Java程序设计》第九周学习总结

    20175227张雪莹 2018-2019-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十一章 JDBC数据库操作 MySQL数据库管理系统 下载安装MySQL 若下载的是 ...

  7. 20155305乔磊2016-2017-2《Java程序设计》第九周学习总结

    20155305 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 JDBC入门 JDBC简介 1.JDBC是java联机数据库的标准规范,它定义了一组标准类与 ...

  8. 20155210潘滢昊 2016-2017-2《Java程序设计》第一周学习总结

    20155210 2016-2017-2<Java程序设计>第一周学习总结 教材学习内容总结 1.1.1: 本节主要讲了Java的由来,1995年5月23日是Java公认的诞生日.还有版本 ...

  9. 20175317 《Java程序设计》第一周学习总结

    20175317 <Java程序设计>第一周学习总结 教材学习内容总结 本周学习了Java大致的开发步骤,完成了课件自带的习题. 学习了在windows与Linux系统下不同的编译方法,掌 ...

  10. 20172318 2016-2017-2 《Java程序设计》第一周学习总结

    20172318 2016-2017-2 <Java程序设计>第一周学习总结 教材学习内容总结 在教材中基本明白了计算机系统的运行方式,了解了对于高级语言是使用是掌握好编程的关键,掌握了一 ...

最新文章

  1. 跨平台PHP调试器设计及使用方法——协议解析
  2. 汉字转16进制java_java实现汉字转unicode与汉字转16进制实例
  3. oracle表空间 unifor,Oracle 表空间的监控
  4. window 下生成SSH key
  5. oracle rds 运维服务_从运维的角度分析使用阿里云数据库RDS的必要性–你不应该在阿里云上使用自建的MySQL/SQL Server/Oracle/PostgreSQL数据库...
  6. java引用数据类型可以更改类型_Java改变引用数据类型的值
  7. 大麦融入阿里电商平台,杰伦演唱会的票会不会好抢点?
  8. 基于scrapy-splash进行单页应用网站seo处理
  9. 文件服务器phpstudy,使用phpstudy搭建ftp服务器
  10. 关系图谱在风控体系的应用与实践
  11. 概率学习总结笔记(扑克概率)
  12. 你认为,做期货是基本面更有效还是技术面更有效?
  13. 未来属于智能,智能存在未在每个角落-称重
  14. 中国大学计算机系写英语论文,计算机专业英语学论文题目 计算机专业英语论文题目怎样取...
  15. 爬虫获取的数据和在自己浏览器看到的不一样
  16. 硅谷送货机器人:脚下的路不好走
  17. 使用c++ opencv 实现mura 检测的代码
  18. VMware中安装win10教程
  19. cisco2960升级ios并更新配置
  20. redmine备份_Bitnami Redmine备份方法

热门文章

  1. c++中BOOL和bool的区别
  2. [Windows]7种网络编程I/O模型代码实现实例
  3. vuex的使用和封装
  4. React开发(153):ant design自定义列
  5. Taro+react开发(50) 小程序触底操作
  6. 前端学习(3146):react-hello-react之getDenvied
  7. 前端学习(3079):vue+element今日头条管理-数据筛选处理
  8. 前端学习(3000):vue+element今日头条管理--封装请求模块
  9. 前端学习(2879)歌谣学习篇原生js和canvas实现弹幕功能
  10. [css] 使用rem的优缺点是什么?和使用百分比有什么区别?