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

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

参考资料

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/417910.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android内存优化(使用SparseArray和ArrayMap代替HashMap)

出处:Sunzxyong HashMap HashMap内部是使用一个默认容量为16的数组来存储数据的,而数组中每一个元素却又是一个链表的头结点,所以,更准确的来说,HashMap内部存储结构是使用哈希表的拉链结构(数组链表&#…

VS2010与QT的集成开发环境

http://blog.csdn.net/hbsong75/article/details/9293773 QT与Java有点类似,也是一种跨平台的软件(当然在windows平台和Linux平台需要安装相应的QT开发环境和运行库,类似于JAVA在不同平台下的虚拟机JVM环境),因此对于某…

各种排序笔记---基于非比较排序部分

在计算机科学中,排序是一门基础的算法技术,许多算法都要以此作为基础,不同的排序算法有着不同的时间开销和空间开销。排序算法有非常多种,如我们最常用的快速排序和堆排序等算法,这些算法需要对序列中的数据进行比较&a…

SharePoint Framework 构建你的第一个web部件(三)

博客地址:http://blog.csdn.net/FoxDave本篇接上一讲,我们一起来看一下如何部署和测试本地开发的web部件。在SharePoint中预览web部件SharePoint工作台在SharePoint中被承载,用来在开发环境预览和测试本地web部件。它…

mysql limit asc_MySql sql优化之order by desc/asc limit M-阿里云开发者社区

Order by desc/asc limit M是我在mysql sql优化中经常遇到的一种场景,其优化原理也非常的简单,就是利用索引的有序性,优化器沿着索引的顺序扫描,在扫描到符合条件的M行数据后,停止扫描;看起来非常的简单&am…

Spring 4 官方文档学习(十)数据访问之JDBC

说明:未修订版,阅读起来极度困难 1、Spring框架JDBC的介绍 Spring JDBC - who does what? 动作Spring你定义连接参数 是打开连接是 指定SQL语句 是声明参数,提供参数值 是准备、执行语句是 迭代结果(如果有)是 操作每…

协方差

协方差一般用来研究诸多实验中各个变量之间的关系。举个例子来说,有n个实验,每个实验得到两个数据,分别为变量x1和变量x2。设n 7。这七组实验得到的数据分别为: (3,5), (4,5.5),(2,4),(6,7),(8,10),(2,5),(5,7.5) 用MATLAB…

行为类模式(二):命令(Command)

定义 将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。 UML 优点 能比较容易的设计一个命令队列可以较容易的将命令加入日志允许接收请求的一方是否处理请求可以容…

win7 nginx mysql php_windows7配置Nginx+php+mysql的详细教程

最近在学习PHP,想把自己的学习经历记录下来,并写一些经验,仅供参考交流。此文适合那些刚刚接触PHP,想要学习并想要自己搭建NginxPHPMysqL环境的同学。当然,你也可以选择集成好的安装包,比如 wamp等&#xf…

我的虚拟化设想(My virtualization vision)

王洪岐(Wang Hongqi) 当前的服务器虚拟化技术所虚拟的操作系统都是完整的操作系统,我认为这样会在一定程度上造成了资源的浪费和技术难度的增加:多个操作系统就有多个操作硬件设备的操作程序,虚拟平台要在操作系统底层…

Kmplayer播放器 绿色免安装版 2016 中文版

软件名称: Kmplayer播放器 绿色免安装版 软件语言: 简体中文 授权方式: 免费软件 运行环境: Win 32位/64位 软件大小: 42.8MB 图片预览: 软件简介: Kmplayer播放器绿色免安装版,多功能的影音播放…

什么是反向代理,如何区别反向与正向代理

转自:http://blog.csdn.NET/shixing_11/article/details/7106241 一直对反射代理的反向不知道如何理解,经过百度知道,再结合下面这幅图,总算弄清楚一点了。简单的说从一个局域网出来到服务端为正向,从客户端要进入一个…

java socket 浏览器_Socket实现Java和浏览器交互。

昨天写了段小程序,现贴出来看看。以下是socket的简单介绍。获取两台联通的机器之间的IP和端口号等信息。import java.io.IOException;import java.net.Socket;public class SockerDemo {public static void main(String[] args) throws IOException {Socket socket …

HashMap和ConcurrentHashMap的区别,HashMap的底层源码。

Hashmap本质是数组加链表。根据key取得hash值,然后计算出数组下标,如果多个key对应到同一个下标,就用链表串起来,新插入的在前面。 ConcurrentHashMap:在hashMap的基础上,ConcurrentHashMap将数据分为多个s…

[水煮 ASP.NET Web API2 方法论](1-1)在MVC 应用程序中添加 ASP.NET Web API

问题 怎么样将 Asp.Net Web Api 加入到现有的 Asp.Net MVC 项目中 解决方案 在 Visual Studio 2012 中就已经把 Asp.Net Web Api 自动地整合到了 MVC 项目模板中。自 Visual Studio 2013 以后,创建 ASP.Net Web应用程序使用的是一种新的"One ASP.NET"项目…

java io流文件损坏_java使用io流下载.docx. xlsx文件,出现文件损坏提示

介绍在使用io流下载服务器上的资源文件时,出现以下提示:但是选择“是”后文件可以正常打开参考 代码如下:[codesyntax lang"java"]RequestMapping(value "downLoadInstruction")public void downLoadInstruction(HttpSe…

java 内存堆和栈_java堆内存和栈内存的处理

前段时间学习二叉树在处理删除操作的时候遇到一个头疼的问题:删除节点的时候明明已经置null了可树上该节点依旧存在,还必须执行node.father.left null;才可以删除node节点,寻找了一下原因发现还是因为对java内存管理理解不够深入。代码如下&…

python基础(十三)

项目实战:运维堡垒机开发 前景介绍 到目前为止,很多公司对堡垒机依然不太感冒,其实是没有充分认识到堡垒机的IT管理中的重要作用的,很多人觉得,堡垒机就是跳板机,其实这个认识是不全面的,跳板功…

java面向_java是面向什么的语言?

Java是一门面向对象编程语言,不仅吸收了C语言的各种优点,还摒弃了C里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,…

java流的应用_Java中I/O流的应用

Java中I/O流的应用iLeGeNDpackagecom.hp.io;/** I/O流的应用 * 实现目标: * 首先创建一个文件 * 通过键盘向文件添加内容 * 然后把文件的内容打印到控制台 * */import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import ja…