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

第三章 程序的机器级表示

3.1 历史的观点

X86 寻址方式经历三代:

1 DOS时代的平坦模式,不区分用户空间和内核空间,很不安全

2 8086的分段模式

3 IA32的带保护模式的平坦模式

3.2 程序编码

指令集体系结构(ISA):计算机硬件与底层软件的接口,它是程序员为使一个二进制机器语言程序正常运行所需要了解的属性。

包含:寄存器组织,指令集,存储器的组织和寻址方式,中断机制,I/O系统结构,机器工作状态的定义及转换,数据类型及表示,保护机制。

指令格式:

操作数地址码

操作码

ISA的类型:

堆栈型,累加器型,寄存器—存储器型,寄存器—寄存器型。

汇编代码不区分有无符号的整数,不区分各种类型的指针

PC寄存器:程序计数器(在IA32中称为PC用%eip表示)指示将要执行的下一条指令在存储器中的地址。

是16位程序计数器,它不属于特殊功能寄存器。专门用于在CPU取指令期间寻址程序存储器。

gcc -S xxx.c -o xxx.s 获得汇编代码,也可以用objdump -d xxx 反汇编; 注意函数前两条和后两条汇编代码,所有函数都有,建立函数调用栈帧,应该理解、熟记。

注意: 64位机器上想要得到32代码:gcc -m32 -S xxx.c6

MAC OS中没有objdump, 有个基本等价的命令otool

Ubuntu中 gcc -S code.c (不带-O1) 产生的代码更接近教材中代码(删除"."开头的语句)

3.3数据格式

数据传输指令有三个变种:movb,movw,moul.

3.4访问信息

操作数:立即数,寄存器,存储器。

有效地址的计算方式 Imm(Eb,Ei,s) = Imm + R[Eb] + R[Ei]*s

栈:“先进后出”PUSH入栈,pop出栈。

3.5算术和逻辑操作

Leal:加载有效地址,注意源操作术是第一个,目的操作数为第二个。

其余指令上一章已经练习过了。

3.6控制

条件码:

跳转指令jp

3.7过程

寄存器%ebp为帧指针,%esp为栈指针。

call和leave,ret支持过程调用返回。

遇到的问题:

关于目的操作数与源操作数教材上的顺序与上学期学的IBM-PC汇编语言有所不同。

参考资料:

百度文库。

IBM-PC汇编语言程序设计。

时间: 2024-10-26 09:46:16

信息安全系统计设计基础第四周学习总结的相关文章

# 2017-2018-1 20155224 《信息安全系系统设计基础》第四周MyOD

2017-2018-1 20155224 <信息安全系系统设计基础>第四周MyOD 在这里跟老师先道歉,当时我的git没有安装好,后面也一直没有装上,所以程序没有git. 要求 参考教材第十章内容 用Linux IO相关系统调用编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能,注意XXX是文件名,通过命令行传入,不要让用户输入文件名 不要把代码都写入main函数中 要分模块,不要把代码都写入一个.c中 提交测试代码和运行结果截图, 提交调试过程截图,要全屏

2017-2018-1 20155232 《信息安全系系统设计基础》实验四

2017-2018-1 20155232 <信息安全系系统设计基础>实验四 实验1学习资源中全课中的"hqyj.嵌入式Linux应用程序开发标准教程.pdf"中的第十一章,提交康奈尔笔记的照片(可以多张) 实验2在Ubuntu完成资源中全课中的"hqyj.嵌入式Linux应用程序开发标准教程.pdf"中的第十一章的test试验,提交编译,加载模块,卸载模块,测试运行的截图(要多张,全屏,体现学号信息) 实验目的 该实验是编写最简单的字符驱动程序,这里的设

# 2017-2018-1 20155224 《信息安全系系统设计基础》实验四

2017-2018-1 20155224 <信息安全系系统设计基础>实验四 外设驱动程序设计-1 学习资源中全课中的"hqyj.嵌入式Linux应用程序开发标准教程.pdf"中的第十一章 提交康奈尔笔记的照片(可以多张) 外设驱动程序设计-2 在Ubuntu完成资源中全课中的"hqyj.嵌入式Linux应用程序开发标准教程.pdf"中的第十一章的test试验 提交编译,加载模块,卸载模块,测试运行的截图(要多张,全屏,体现学号信息) 根据下载好的pdf进

20135219洪韶武——信息安全系统设计基础第四周学习总结

信息安全系统设计基础第四周学习总结 学习任务:教材第三章 学习时间:10小时 学习内容 一.教材知识梳理 1.程序编码与机器级代码 程序编码: gcc编译器,将源代码转化成可执行代码,C预处理器-汇编器-链接器 机器级代码: 机器级程序的格式和行为,定义[指令集体系结构ISA],定义了处理器状态,指令格式,以及指令对状态的影响 机器级程序实用的存储地址使用的是虚拟地址 2.数据格式 整数型.长整数型存储为4字节格式 指针类型存储为4字节格式 浮点数有三种形式:单精度.双精度.扩展精度,分别为4字

2019-2020-1 20191312《信息安全专业导论》第四周学习总结

2019-2020-1 20191312<信息安全专业导论>第四周学习总结 教材学习内容总结 学习了门和电路以及计算部件,对计算机的主要构成及其构成部件的功能有了一定的了解.从门到电路再到集成电路,CPU,一个个基本构件构成了计算机.同时,这些构成计算机的部件又有着自己的特征:速度,大小和效率,也承担着不同的任务.冯诺依曼结构体系是当今大多数计算机的底层结构. 阅读了<自学是门手艺>,掌握了字符串,容器和文件的一些基本操作. 教材学习中的问题和解决过程 阅读了磁盘这一节产生疑问,磁

2019-2020 20191323《信息安全专业导论》第四周学习总结

2019-2020 20191323<信息安全专业导论>第四周学习总结 教材学习内容总结 本周学习了第四章<门与电路>以及第五章<计算部件>. 门与电路 阐述了门与电路的关系,介绍了非门.与门.或门.异或门.与非门.或非门以及相应的布尔表达式,证明了可以用数学法来设计逻辑电路,同时也介绍了加法器等几种组合电路. 计算部件 主要阐述了冯诺伊曼体系结构以及其中结构的详细原理,同时也引出了并行体系结构,让我对计算机的计算方式有了更近一步的认识 原文地址:https://www

2019-2020-1 20191330 《信息安全专业导论》第四周学习总结

2019-2020-1 20191330 <信息安全专业导论>第四周学习总结 教材学习内容总结 第四章:学习了对电信号进行基本运算的设备:门,及门的一些类型和相关计算,并用NOR门表示了NOT,OR,等门 第五章:学习了独立的计算机部件及冯诺依曼体系结构的有关概念. 参加云班课测验,得分49分,此章节的学习还需继续努力! 本周有关学习的截图 本周代码学习 参加了ISA的公开课及计算机联盟的公开课 对C语言的来历及发展过程有了初步的了解,并学习了一些基本C语言的函数 有关自学是门手艺的学习 与教

191208 孙汇阳《信息安全专业导论》第四周学习总结

教材学习内容总结 概论4,5,6,7章 <自学是门手艺>第5章5,6 <浪潮之巅>第四版七章,批注到p98页(7未完成) 教材学习中的问题和解决过程 - 问题1:pep\8虚拟机怎样实现ASCII码转换 - 问题1解决方案:自学书上内容,观看bilibili Python入门之编码规范前四十分钟,基本解决. 代码调试中的问题和解决方法 -问题1:代码符号问题较为好转,但速度较慢,c语言忘记较多,仍处于借鉴他人代码完成需要 -问题1解决方法:自己寻找思路,找代码进行练习,提高打字速度

信息安全系统设计基础第四周学习总结------20135334赵阳林

X86 寻址方式经历三代: 1 DOS时代的平坦模式,不区分用户空间和内核空间,很不安全 2 8086的分段模式 3 IA32的带保护模式的平坦模式 对于机器级编程来说,其中两种抽象尤为重要 1 机器级程序的格式和行为,定义为指令集体系结构(ISA),它定义了处理器状态,指令的格式,以及每条指令对状态的影响 2 机器级程序使用的存储器地址是虚拟地址,提供的存储器模型看上去是一个非常大的字节数组 数据格式:由于是从16位体系结构扩展成32位,intel用术语字(word)表示16位数据类型,因此3