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

第四章  处理器体系结构

4.1 Y86指令集体系结构

4.11程序员可见的状态

1.程序员可见状态:

Y86程序中的每条指令都会读取或修改处理器状态的某些部分。

2.“程序员”:

既可以是用汇编代码写程序的人,也可以是产生机器级代码的编译器。

3.程序寄存器:

(1)8个,%eax、%edx、%ebx、%esi、%edi、%esp和%ebp。

(2)处理器的每个程序寄存器存储一个字。

(3)寄存器%esp被入栈,出栈,调用和返回指令作为栈指针。

(4)其他情况,有三个一位的条件码:ZF,SF和OF。

(5)程序计数器(PC)存放当前正在执行指令的地址。

4.存储器:

(1)一个很大的字节数组,保存着程序和数据。

(2)Y86程序用虚拟地址来引用存储器位置。硬件和操作系统软件联合起来将虚拟地址翻译成实际或物理地址。

5.状态码Stat:它表明程序执行的总体状态,会指示是正常运行还是出现了某种异常。

4.1.2Y86指令

Y86指令集基本上是IA32指令集的一个子集,只包括四字节整数操作,寻址方式比较少,操作也较少。

1.movl指令:

(1)分成了四个不同的指令:irmovl,rrmovl,mrmovl和rmmovl.

(2)源可以是立即数(i),寄存器(r)或存储器(m)。

  目的可以是寄存器(i)或存储器(m)。

指令名字的第一个字母就表明了源的类型,指令名字的第二个字母就指明了目的类型。

注意:(1)这里的存储器引用方式是简单的基址和偏移量形式,寻址方式不支持第二变址寄存器和任何寄存器值的伸缩。

   (2)两个操作数不能都是来自存储器,也不允许将立即数传送到存储器。

2.四个整数操作指令

addl 加

subl 减

andl 乘

xorl 除

(1)它们只对寄存器数据进行操作(I32还允许对存储器数据进行操作)。

(2)这些指令会设置三个条件码:ZF,SF和OF(零,符号和溢出)。

3.七个跳转指令

jmp,jle,jl,je,jne,jge和jg。

4.6个条件传送码

cmovle,cmovl,cmove,cmovne,cmovge和cmovg.

只有当条件码妈祖所需要的约束时,才会更新目的寄存器的值。

5.call,ret

call指令将返回地址入栈,然后跳到目的地址。ret从这样的过程调用中返回。

6.pushl和popl

实现了入栈和出栈。

7.halt

(1)停止指令的执行。

(2)执行halt指令会导致处理器停止,并将状态码设置为HLT。

4.1.3指令编码

1.指令的字节级编码

(1)每条指令需要1-6个字节不等,每条指令的第一个字节表明指令的类型

(2)第一字节分为两部分:

  高四位:代码部分,值域为0~0xB。

  低四位:功能部分,功能值只有在一组相关指令共用一个代码时才有用。

(3)8个程序寄存器中每个都有相应的0~7的寄存器标识符。当需要指明不应访问任何寄存器时,用ID值0xF表示。

4.1.4Y86异常

1.状态码Stat

(1)描述程序执行的总体状态。

(2)AOK 正常操作

    HLT 处理器执行halt指令

    ADR 遇到非法地址

    INS 遇到非法指令

4.1.5Y86程序

1.Y86和IA32的区别

(1)Y86有时需要两条指令来完成IA32一条指令就能完成。

(2)Y86没有伸缩寻址模式。

4.1.6一些Y86指令的详情

两个特别的指令:pushl和popl 通常有两种约定

(1)压入%esp的原始值。

(2)压入减去4的%esp得出值。

4.2逻辑设计和硬件控制语言HCL

电子电路中,逻辑1是用1.0V左右的高电压表示,逻辑0用0.0V左右的低电压表示。

4.2.1逻辑门

1.逻辑门产生的输出,等于它们输入位值的某个布尔函数。

2.HCL表达式:

AND  &&

OR    ||

NOT  !

3.逻辑门只对单个位的数进行操作,而不是整个字。

4.逻辑门总是活动的,输入变化输出很快就跟着变化。

4.2.2组合电路和HCL布尔表达式

1.构建组合电路时的限制:

(1)两个或多个逻辑门的输出不能连接在一起。

(2)必须无环。

2.组合逻辑电路和c语言中逻辑表达式的区别

(1)组合电路的输出会持续响应输入变化,c语言表达式只有在执行过程中被遇到才求值。

(2)逻辑门只对0和1操作,c语言表达式中参数可以是任意整数,0是FALSE,不是0的都是TRUE。

(3)c的逻辑表达式可能被部分求值。

4.2.3字级的组合电路和HCL整数表达式

1.所有字级的信号都声明为int,不指定字的大小。

2.多路复用函数用情况表达式来描述。

3.选择表达式为1时,表示如果前面没有情况被选中,就选择这种情况。

4.不同选择表达式之间允许不互斥。

4.2.4集合关系

判断集合关系的通用格式是:

iexpr in {iexpr1,iexpr2,...,iexprk}

iexpr等都是整数表达式。

4.2.5存储器和时钟

1.时序电路的两类存储器设备

(1)时钟寄存器:存储单个位或字。时钟信号控制寄存器加载输入值。

(2)随机访问储存器:储存多个字,用地址选择该读/写哪个字。

4.3Y86的顺序实现

SEQ处理器

4.3.1将处理组织成阶段

1.阶段

(1)取指:

(2)译码:

(3)执行:

(4)访问;

(5)写回:

(6)更新PC:

详细内容见书P251。

2.OPl(整数和逻辑运算),rrmovl(寄存器-寄存器传送)和irmovl(立即数-寄存器传送)类型的指令所需的处理。见书P252  图4-18

3.rmmovl和mrmovl所需要的处理。见书 P253 图4-19

4.处理pushl和popl指令所需的步骤。见书 P254 图4-20

5.跳转,call和ret三类控制转移指令的处理。 见书P256 图4-21

4.3.2SEQ硬件结构

1.实现SEQ的画图惯例:(P258 图4-22)

(1)浅灰色方框表示硬件单元。

(2)控制逻辑快是用灰色圆角矩形表示的。

(3)线路的名字在百色椭圆中说明。

(4)宽度为字长的数据连接用中等粗度的线表示。

(5)宽度为字节或更窄的数据连接用细线表示。

(6)单个位的连接用虚线来表示。

4.3.3SEQ的时序

1.SEQ的实现包括组合逻辑两种存储器设备

(1)时钟寄存器-程序计数器和条件码寄存器。

(2)随机访问存储器-寄存器文件,指令存储器和数据存储器。

(3)剩下四个:

  ①条件码寄存器:只在执行整数运算指令时装载

  ②数据存储器:只在执行rmmovl、pushl或call时写入

  ③寄存器文件:两个写端口允许每个时钟周期更新两个程序寄存器。特殊寄存器?0xF表示此端口不应执行写操作。

4.3.4SEQ阶段的实现

在控制逻辑中必须被显式引用的常数:

(1)nop指令:PC+1,别的只经过不改变。

(2)halt指令:使处理器状态变为HLT,导致停止运行。

1.取指阶段:

以PC为第一个字节,读6个字节。

(1)两个逻辑块:

指令代码:icode

指令功能:ifun

(2)三个一位的信号

instr_valid:发现不合法的指令.

need_regids:包含寄存器指示符字节吗

need_valC:包括常数字吗

2.译码和写回阶段

都需要访问寄存器文件,根据四个端口的情况,判断应该读哪个寄存器产生信号valA、valB

3.执行阶段

(1)包括算术/逻辑单元ALU,输出的是valE。

(2)包括条件码寄存器。

4.访存阶段

(1)读或者写程序数据。

(2)根据icode,imem_error,instr_valid,dmem_error,从指令执行的结果计算状态码Stat。

5.更新PC阶段

会产生程序计数器的新值。

时间: 2024-08-08 05:34:50

信息安全系统设计基础第五周学习总结-吕松鸿的相关文章

信息安全系统设计基础第三周学习总结-吕松鸿

第2章 信息的表示和处理 (一).三种重要的数字表示 无符号数:编码基于传统的二进制表示法(大于或者等于零的数字). 补码:编码是表示有符号整数的最常见方式(为正或者为负的数字). 浮点数:编码是表示实数的科学记数法的以二为基数的版本. 整数的表示虽然只能编码一个相对较小的数值范围,但是是精确的:而浮点数虽然可以编码一个较大的数值范围,但是这种表示是近似的表示. 大量的计算机安全漏洞都是由于计算机运算的微妙细节引发的. (二).信息存储 计算机最小的可寻址的存储器单位——字节 一个字节的值域:0

信息安全系统设计基础第十周学习总结-吕松鸿

第八章 异常控制流 平滑:指在存储器中指令都是相邻的. 突变:出现不相邻,通常由诸如跳转.调用.和返回等指令造成. 异常控制流ECF:即这些突变. 关于ECF: 1.ECF是操作系统用来实现I/O.进程和虚拟存器的基本机制 2.应用程序通过使用一个叫做陷阱或者系统调用的ECF形式,向操作系统请求服务 3.ECF是计算机系统中实现并发的基本机制 4.软件异常机制——C++和Java有try,catch,和throw,C中非本地跳转是setjmp和longjmp 第一节 异常 异常是异常控制流的一种

信息安全系统设计基础第六周学习总结-吕松鸿

第6章 存储器层次结构 6.1存储技术 6.1.1随机访问存储器 分为两类:静态(SRAM)和动态(DRAM). (1)SRAM:高速缓存存储器,既可以在CPU芯片上,也可以在片下. (2)DRAM:主存以及图形系统的帧缓冲区. 1.静态RAM SRAM将每个位存储在一个双稳态的存储器单元里.每个单元是用一个六晶体管电路来实现的.该电路有一个属性:可以无限期地保持在两个不同的电压配置或状态之一. 2.动态RAM 每位晶体管数 相对访问时间 持续的? 敏感的? 相对花费 应用 SRAM 6 1x

信息安全系统设计基础第八周学习总结-吕松鸿

第10章 系统级I/O I/O:在主存和外部设备之间拷贝数据的过程. 10.1Unix I/O 一个Unix文件就是一个m个字节的序列: B0,B1,B2…Bk…B(m-1) 1.所有的输入输出都能以一种统一且一致的方式来执行: (1)打开文件 a.描述符:内核返回一个小的非负整数,它在后续对此文件的所有操作中标识这个文件. b. Unix外壳创建的每个进程开始时都有三个打开的文件:标准输入(描述符为0).标准输出(描述符为1).标准错误(描述符为2). (2)改变当前的文件设置. (3)读写文

信息安全系统设计基础第十三周学习总结-吕松鸿

第九章 虚拟存储器 虚拟存储器是计算机系统最重要的概念之一,它是对主存的一个抽象 三个重要能力: 它将主存看成是一个存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,并根据需要在磁盘和主存之间来回传送数据,通过这种方式,高效的使用了主存 它为每个进程提供了一致的地址空间,从而简化了存储器管理 它保护了每个进程的地址空间不被其他进程破坏 9.1 物理和虚拟寻址 1.物理地址 计算机系统的主存被组织成一个由M个连续的字节大小的单元组成的数组,每字节都有一个唯一的物理地址PA. 根据物理地址寻

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的处理器状态类似与

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

X86 寻址方式经历三代: 1 DOS时代的平坦模式,不区分用户空间和内核空间,很不安全 2 8086的分段模式 3 IA32的带保护模式的平坦模式 ISA 指令集体系结构,机器级程序的指令和格式.它定义了处理状态,指令的格式,以及每条指令对状态的影响. 获得汇编代码的两种方式: gcc -S xxx.c -o xxx.s 获得汇编代码,也可以用objdump -d xxx 反汇编 (反汇编不需要访问程序的源代码或者汇编代码) C语言数据类型在IA32中的大小: P111页表格. 8个寄存器(3