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

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,一经查实,立即删除!

相关文章

中文版php.ini

;;;;;;;;;;;; ;; 语法 ;; ;;;;;;;;;;;; ; 该文件的语法非常简单。空白字符和以分号开始的行被简单地忽略。 ; 章节标题(例如: [php])也被简单地忽略,即使将来它们可能有某种意义。 ; ; 设置指令的格式如下: ; directive value ; 指令名(directive)是大小…

使用轻量级Spring @Scheduled注解执行定时任务

WEB项目中需要加入一个定时执行任务,可以使用Quartz来实现,由于项目就一个定时任务,所以想简单点,不用去配置那些Quartz的配置文件,所以就采用了Spring Scheduled注解来实现了定时任务。在这里做个备注。 spring配置文…

mysql 表名通配符导出_mysqldump根据通配符批量导出

xtrabackup的主要优点:1,物理备份,备份速度快2,热备份、无需停机3,恢复速度快4.自动会对备份文件进行验证1. xtrabackup 工具的安装1.1 安装依赖包#No package perl-Digest-MD5 available.yum install -y rsync perl l perl-Digest-MD5 perl perl-devel …

系统垃圾清理.cmd

将以下内容保存为“系统垃圾清理.cmd”文件,运行即可 echo off echo 正在清除系统垃圾文件,请稍等...... del /f /s /q %systemdrive%\*.tmp del /f /s /q %systemdrive%\*._mp del /f /s /q %systemdrive%\*.log del /f /s /q %systemdrive%\*.gid del …

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

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

mysql按日期获取最新_mysql获取按日期排序获取最新的记录

主要按照日期获得最新的数据;今天记录两种方式,并不涉及效率等其他方面问题:第一种, 利用GROUP BY原理:select * from (select * from authenticationrecord order by authenticationtime desc) temp group by merchan…

vbs运算符号和函数

基本运算 数字加法及字符串连接 - 数字减法 * 数字乘法 / 数字除法 Mod 求余数 \ 求商数 & 字符串连接 ^ 次方 相等 <> 不相等 > 大于或等于 > 大于 < 小于或等于 < 小于 Not 非 And 且 Or 或 Xor 异或 循环及决策 if ....then 若…

VS2010与QT的集成开发环境

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

yum mysql 5.1 innodb_Yum升级mysql5.1到5.6

Yum升级mysql5.1到5.6有一些虚拟机、云主机提供商仍然使用的是老版本的安装套件。预装的应用软件版本很低。比如 techbrood.com 使用的云服务器&#xff0c;其中MySQL预装版本为老版本5.1.x。而最新的mysql版本在性能、功能、安全性等方面都有了很多的改进。要从最新版本获益&a…

遍历处理path及其子目录所有文件

遍历处理path及其子目录所有文件Sub ShowAllFile(Path) Set FSO CreateObject("Scripting.FileSystemObject") Set f FSO.GetFolder(Path) Set fc2 f.files For Each myfile in fc2 WScript.Echo path&"\"&myfile.name …

mysql用户和权限备份_备份MySQL用户和权限

Mysql用户在数据库Mysql的表用户中,为了备份这个表,你可以这样做&#xff1a;mysqldump -u root -p mysql user > UserTableBackup.sql对于备份所有mysql数据库并为每个数据库创建一个文件,你可以自己编写shell脚本,遵循一些可以帮助你的代码&#xff1a;# Get all database…

获取所有某格式文件到文件

扫描文件sub scan(folder_)Set fsocreateobject("scripting.filesystemobject") set folder_fso.getfolder(folder_)set filesfolder_.files遍历路径中的文件for each file in files extmid(file,InStrRev(file, ".")1) extlcase(ext) if extkuozhan then …

linux mysql 系统时间函数吗_Linux 宝库 - Mysql日期和时间函数不求人

对于每个类型拥有的值范围以及并且指定日期何时间值的有效格式的描述见7.3.6 日期和时间类型。这里是一个使用日期函数的例子。下面的查询选择了所有记录&#xff0c;其date_col的值是在最后30天以内&#xff1a;mysql> SELECT something FROM tableWHERE TO_DAYS(NOW()) - …

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

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

vbs特殊符号

常数 值 描述 vbCr Chr(13) 回车符。 vbCrLf Chr(13) & Chr(10) 回车符与换行符。 vbFormFeed Chr(12) 换页符&#xff1b;在 Microsoft Windows 中不适用。 vbLf Chr(10) 换行符。 vbNewLine Chr(13) & Chr(10) 或 Chr(10) 平台指定的新行字符&#xff1b;适用于…

在mysql表中如何变换列和行_在SQL中转换列和行的简单方法?

有几种方法可以转换这些数据。在你最初的帖子中&#xff0c;你说PIVOT对于这个场景来说似乎太复杂了&#xff0c;但是可以很容易地使用UNPIVOT和PIVOTSQL Server中的函数。但是&#xff0c;如果您无法访问这些函数&#xff0c;则可以使用UNION ALL到UNPIVOT然后是一个具有CASE向…

powerpoint文字教程

建立空白演示文稿 如果所有模板都不满足要求&#xff0c;或者想制作一个特殊的、具有与众不同外观的演示文稿&#xff0c;可从一个空白演示文稿开始&#xff0c;自建背景设计、配色方案和一些样式特性。选择“空演示文稿”选项&#xff0c;或者在PowerPoint 2000窗口中&#xf…

不同语言,系统通过共享内存方式实现信息交互

1. 两个程序映射同一个文件到自己的地址空间2. 进程A先运行, 每隔两秒读取映射区域, 看是否发生变化. 3. 进程B后运行, 它修改映射区域, 然后推出, 此时进程A能够观察到存储映射区的变化一个读&#xff0c;一个写。转载于:https://www.cnblogs.com/swbzmx/p/5992679.html

如何使用用window.open()

oNewWindow window . open ( sURL , sName , sFeatures , bReplace ) 参数&#xff1a;sUrl : 可选项。字符串(String)。指定要被加载的HTML文档的 URL 地址。假如无指定值&#xff0c;则 about:blank 的新窗口会被显示。 sName : 可选项。字符串(String)。 指定打开的窗口…

mysql myisam/innodb高并发优化经验_MySQL MyISAM / PHP 高并发优化经验

最近做的一个应用&#xff0c;功能要求非常简单&#xff0c;就是 key/value 形式的存储&#xff0c;简单的 INSERT/SELECT&#xff0c;没有任何复杂查询&#xff0c;唯一的问题是量非常大&#xff0c;如果目前投入使用&#xff0c;初期的单表 insert 频率约 20Hz(次/秒&#xf…