信息安全系统设计基础第五周学习总结—20135227黄晓妍

X86 寻址方式经历三代:

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

2 8086的分段模式

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

ISA

指令集体系结构,机器级程序的指令和格式。它定义了处理状态,指令的格式,以及每条指令对状态的影响。

获得汇编代码的两种方式:

gcc -S xxx.c -o xxx.s 获得汇编代码,也可以用objdump -d xxx 反汇编

(反汇编不需要访问程序的源代码或者汇编代码)

C语言数据类型在IA32中的大小:

P111页表格。

8个寄存器(32位)

eax,ecx,edxe;bx,esi,edi为六个通用寄存器。

esi edi可以用来操纵数组

ebp(帧指针),esp(栈指针)保存指向程序栈中重要位置的指针。

立即数,存储器,寄存器寻址方式:

P113表格公式。3.1的例题帮助检验掌握否。

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

数据传送指令:

MOV:movb,movw,movl分别传送字节,字,双字

MOVZ(零扩展,高位用0填充):同上,压栈出栈见p114表格。(注意栈顶的地址值是栈中最小的)

MOVS(符号扩展,高位用原来最高位的数值填充):同上

C语言中,指针就是地址,间接引用指针就是将指针放在一个寄存器中,然后在存储器中使用这个寄存器。

算术运算和逻辑运算:

四种整数操作:加载有效地址,一元操作,二元操作,移位。

具体见p119表格。

控制:

核心是跳转语句。

无条件跳转:jmp跳转目标可以是直接跳转,即跳转目标是作为指令的一部分编码;也可以是间接跳转,目标是从寄存器或存储器中读出的。

条件跳转:判断条件:标志位p124页。跳转指令,p128.

CMP是不会改变源操作数的减法,只是做比较之后改变标志位。

SUB是会改变源操作数的减法。

循环

if-else 的汇编结构:

p130页的三个版本的代码帮助理解汇编代码。

do-while的汇编结构:

p133页三个代码。

While的汇编结构:

p135 页三个代码。

for的汇编结构:

p138页的三个版本的代码。

条件传送指令:

P140三个代码。

基于条件数据传送的指令比基于条件控制转移指令的性能好。但是,条件数据传送很受限制,好在它们能用的情况还比较常见。

Switch:

P145,146两页的三个代码时理解的核心。

注意没有的情况归入default。汇编就直接跳转到所有情况后面的最后。

过程:

栈:栈顶指针,%esp。在汇编语言中,执行子程序之前,要将该跳转指令下一条指令的地址压入栈中保护起来,在子程序执行完了之后出栈,保证可以继续执行主程序。

Call指令将控制转移到一个函数的开始,ret指令返回到call指令后的下一条指令。

栈帧的gdb命令:

backtrace/bt n

n是一个正整数,表示只打印栈顶上n层的栈信息。

-n表一个负整数,表示只打印栈底下n层的栈信息。

frame n

n是一个从0开始的整数,是栈中的层编号。比如:frame 0,表示栈顶,frame 1,表示栈的第二层。

这个指令的意思是移动到n指定的栈帧中去,并打印选中的栈的信息。如果没有n,则打印当前帧的信息。

up n

表示向栈的上面移动n层,可以不打n,表示向上移动一层。

down n

表示向栈的下面移动n层,可以不打n,表示向下移动一层。

实验练习:

我使用Vim保存的mainangela.c

查看汇编代码

参考博客:20135202闫佳歆(参考内容:gdb的栈帧命令)

时间: 2024-10-12 17:43:35

信息安全系统设计基础第五周学习总结—20135227黄晓妍的相关文章

信息安全系统设计基础第十一周学习总结—20135227黄晓妍

第8章异常控制流 控制流:控制转移序列. 控制转移:从一条指令到下一条指令. 异常控制流:现代操作系统通过使控制流发生突变来对系统状态做出反应,这些突变称为异常控制流. 一.异常 1.异常的剖析,如下图所示: 异常:控制流中的突变,用来响应处理器状态的某些变化. Icurr:当前指令 事件:状态变化 2.异常处理 异常表:当处理器检测到有事件发生时,它会通过跳转表,进行一个间接过程调用(异常),到异常处理程序. 异常号:系统中可能的某种类型的异常都分配了一个唯一的非负整数的异常号.异常号是到异常

信息安全系统设计基础第三周学习总结—20135227黄晓妍

一.Vim编辑器 1.Vim的六种模式 2.Vim三种常用模式的使用方式,以及三者的切换.打开Vim即默认进入普通模式,按i进入插入模式,按esc从插入模式退出普通模式,再按:进入命令行模式. 普通模式下游标的移动 按键 说明 h 左 l 右(小写L) j 下 k 上 w 移动到下一个单词 b 移动到上一个单词 普通模式进入插入模式的方式 命令         说明 i        在当前光标处进行编辑 I        在行首插入 A       在行末插入 a       在光标后插入编辑

信息安全系统设计基础第七周学习总结—20135227黄晓妍

第六章存储器层次结构 6.1存储技术 6.1.1随机访问存储器(分成两类) 静态RAM(SRAM):快,作为高速缓存存储器.(几百几千兆) 动态RAM(DRAM):作为主存,图形系统的帧缓冲区.(<=几兆) 1.静态RAM 具有双稳定状态,它可以无期限地保持在两个不同的电压配置(状态)其中的一个.也可以保持在亚稳定状态,但这个状态易被干扰.由于它具有双稳定性,所以即使有干扰,当干扰消除时,它能很快地恢复到稳定值. 2.动态RAM DRAM将每个位存储为对一个电容充电.对干扰非常敏感,电容的电压被

信息安全系统设计基础第十三周学习总结—20135227黄晓妍

第九章 虚拟存储器 将主存看成是一个存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,并根据需要在磁盘和主存之间来回传送数据,通过这种方式,它高效地使用了主存.其实这一章还是讲解虚拟内存的,也就是和内核中的内存管理相关. 它为每个进程提供了一致的地址空间,从而简化了存储器管理 它保护了每个进程的地址空间不被其他进程破坏. 在硬件异常.汇编器.链接器.加载器.共享对象.文件和进程的设计中扮演着重要角色. 存储器让应用程序有了强大的能力,可以创建和销毁存储器片.将存储器片映射到磁盘文件的某个

20135223何伟钦—信息安全系统设计基础第五周学习总结

第三章 程序的机器级表示 一.历史观点 Intel处理器(X86) 二.程序编码 gcc -01 -o p p1.c p2.c ①编译选项-01 表示编译器使用第一级优化 ②编译选项-02 表示编译器使用第二级优化(较好的选择) ③-o 表示分别将p1.c和p2.c编译后的可执行文件命名为p GCC将源代码转化为可执行代码的步骤: C预处理器:扩展源代码,插入所有#include命令指定的文件,并扩展生成.i文件 编译器:产生两个源代码的汇编代码,生成.s文件 汇编器:将汇编代码转化成二进制目标

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

第四章 处理器体系结构 第一节 Y86指令集体系结构 一.程序员可见的状态 1.含义: 每条指令都会读取或修改处理器状态的某些部分 2.“程序员”: 可以是用汇编代码写程序的人,也可以是产生机器级代码的编译器. 3.具体的处理器状态:类似于IA32 有8个程序寄存器,%eax,%ecx,%edx,%ebx,%esi,%edi,%esp,%ebp 处理器的每个程序寄存器存储一个字 寄存器%esp被入栈.出栈.调用和返回指令作为栈指针.在其他情况下,寄存器没有固定的含义或固定值. 有三个一位的条件码

20135304刘世鹏——信息安全系统设计基础第五周学习总结

第四章 处理器体系结构 ISA:一个处理器支持的指令和指令的字节级编码——指令集体系结构 ISA在编译器编写者和处理器设计人员之间提供了一个概念抽象层 与IA32相比Y86指令集的数据类型.指令和寻址方式都要少一些,它的字节级编码比较简单,不过它仍然足够完整 4.1.Y86指令集结构 定义一个指令集体系结构,暴扣定义各种状态元素.指令集和它们的编码.一组编程规范和异常事件处理 1.程序员可见的状态 程序员可见状态:Y86程序中的每条指令都会读取或修改处理器状态的某些部分 Y86的处理器状态类似与

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

处理器的体系结构 ISA:一个处理器支持的指令和指令的字节级编码称为它的指令集体系结构ISA. Y86是一个指令体系结构(ISA)寄存器.存储器.条件码.PC.程序状态. halt:这个指令将会终止指令的执行. nop:这是一个占位指令,它不做任何事情,后续为了实现流水线,它有一定的作用. xxmovl:这是一系列的数据传送指令,其中r代表寄存器,m代表存储器,i代表立即数.比如rrmovl指令,则代表将一个寄存器的值,赋给另外一个寄存器. opl:操作指令,比如加法,减法等等. jxx:条件跳

20135234马启扬-——信息安全系统设计基础第五周学习总结