20145336张子扬 《信息安全系统设计基础》第6周学习总结(一)
20145336张子扬 《信息安全系统设计基础》第6周学习总结(一)
教材学习内容总结
学习目标
- 了解ISA抽象的作用
- 掌握ISA,并能举一反三学习其他体系结构
- 了解流水线和实现方式
指令集体系统:一个处理器支持的指令和指令的字节级编码,每种不同的处理器都有自己不同的ISA
Y86指令集体系结构
定义一个指令集体系结构,包括定义各种状态元素,指令集和他们的编码、一组程序规范和异常处理。
- RF程序寄存器:%eax,%ecx,%edx,%ebx,%esi,%edi,%esp,%ebp(%esp被入栈、出栈、调用和返回指令作为栈指针)
- PC程序计数器:存放当前正在执行指令的地址
- DEME存储器:一个很大的字节数组,保存着程序和数据
- Stat程序状态:表明程序执行的总体状态
- CC条件码:ZF、SF、OF
Y86指令
字节
halt 0|0 1
nop 1|0 1
rrmovl rA,rB 2|0 |rA|rB 2
irmovl V ,rB 3|0 |F |rB|V 6
rmmovl rA,D(rB) 4|0 |rA|rB|D 6
mrmovl D(rB),RA 5|0 |rA|rB|D 6
OPL rA,rB 6|fn|rA|rB 2
JXX Dest 7|fn|Dest 5
cmovXX rA,rB 2|fn|rA|rB 2
call Dest 8|0 |Dest 5
ret 9|0 1
pushl rA A|0 |rA|F 2
popl rA B|0 |rA|F 2
- movl:头两个字母指定了源和目的格式,立即数(i),寄存器(r),存储器(m)
- 不允许从一个寄存器地址直接传送到另一个存储器地址,也不允许将立即数传送到存储器
- OPL是4个整数操作指令:addl,subl,andl,xorl。只对寄存器数据进行操作。
- JXX是7个跳转指令jmp,jle,jl,je,jne,jge和jg。根据分支指令的类型和条件码选额分支。
- cmovXX有6个条件指令:cmovle,cmovl.cmove,cmovne,cmovge,cmovg。这些指令格式与rrmovl一样,但只有当条件满足所需的约束时,才会更新目的寄存器的值
- call将返回地址入栈,然后跳到目的地址。
- ret指令从这样的过程调用中返回
- pushl和popl实现了入栈和出栈
- halt停止了指令的执行
指令编码
阅读指令编码看每条指令第一个字节表明指令的类型,高四位是代码部分,低四位是功能部分。
可能有附加的寄存器指示符字节,这些寄存器字段设为rA,rB。
有些指令需要附加一个四字节的常数字,和IA32一样,所有整数采用小端法编码
任意一个字节序列要么是一个唯一的指令编码,要么就不是一个合法序列
第一个字节有唯一的代码和功能组合,我们就可以决定多有其它发夹字节的长度和含义
Y86异常
值 名字 含义
1 AOK 正常操作
2 HLT 处理器执行halt指令
3 ADR 遇到非法地址
4 INS 遇到非法指令
ADR表示处理器试图从一个非法存储器地址读或者向一个非法存储器地址些
处理器通常会调用一个异常处理程序,这个过程被置顶用来处理遇到某种类型的异常
逻辑设计和硬件控制语言HCL
一个数字系统需要三部分组成:计算对位进行操作的函数的组合逻辑、存储位的存储器元素、以及控制存储器元素更新的时钟信号
逻辑门
逻辑门产生的输出等于他们输入位值的某个布尔函数
hcl表达式 AND && OR || NOT !!
组合电路:很多逻辑门组合成一张网,就能构成的计算块,构建这些网的两条限制 1. 两个或多个逻辑门的输出不能连接在一起 2. 这个网必须是无环的
c语言逻辑表达和hcl逻辑表达的区别 1. hcl输如会持续的影响输出,输入变化了,在一定的延迟后,输出也会变化。c只有在程序执行过程中被遇到时才会进行求值。 2. c的逻辑表达式允许参数是任意整数,0FALSE,其它值表示TRUE。逻辑值只对0和1进行操作
其他(感悟、思考等,可选)
本周我学习第四章,这章内容主要是在学习处理器体系结构,处理器体系结构就是包括定义各种状态元素、指令集、编程规范、个异常时间处理。这章的重点是要我们去了解汇编码和字节编码的关系,怎么去阅读一条字节编码,了解计算机如何处理这条字节编码。第二节看了一半,主要在讲上学期我们学过的数字电路的知识。
本章的知识大多数是偏向理论性的,实践的地方比较少。了解知识点,练习课后习题,阅读汇编代码,尝试去写汇编代码,翻译代码我觉得是这周学习的重点内容。