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

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

教材学习内容总结

4.1:Y86指令集体系结构

•程序员可见的状态:每条指令都会读取或修改处理器状态的某些部分
•Y86包括:8个程序寄存器、3个条件码ZF\SF\OF、程序计数器(PC)
•Y86用虚拟地址引用存储器位置,程序状态的最后一个部分是状态码Stat,它表明程序执行的总体状态
•Y86指令:
movl分为irmovl rrmovl mrmovl rmmovl
整数指令:addl subl andl xorl
跳转指令:jmp jle jl je jne jge jg
6个条件传送指令:cmovle cmovl cmove cmovne cmovge cmovg
call:将返回地址入栈,然后跳到目的地址
ret:过程调用中返回
pushl:入栈
popl:出栈
halt指令停止指令的执行:,执行此指令会导致处理器停止,并将状态码设置为HLT
•指令的字节级编码:每条指令需要1-6个字节不等,每条指令的第一个字节表明指令的类型
•第一个字节:分为两个部分,每个部分4位:
高四位:代码部分,值域为0~0xB
低四位:功能部分,功能值只有在一组相关指令共用一个代码时才有用
•额外的字节
附加的寄存器指示符字节:指定一个或两个寄存器,例如rA或者rB
附加的4字节常数字
•Y86指令和IA32代码的主要区别在于:它可能需要多条指令来执行一条IA32指令能完成的所有功能

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

•逻辑门符号:
AND:&&
OR:||
NOT:!
•组合电路:将很多的逻辑门组合成一个网,能构建计算块。
限制:
1.两个或多个逻辑门的输出不能连接在一起
2.这个网必须是无环的。
•组合逻辑电路和c语言中逻辑表达式的区别
1.组合电路的输出会持续响应输入变化,c语言表达式只有在执行过程中被遇到才求值
2.逻辑门只对0和1操作,c语言表达式中参数可以是任意整数,0是FALSE,不是0的都是TRUE
3.c的逻辑表达式可能被部分求值
•存储设备都是由同一个时钟控制,包括:
时钟寄存器(寄存器):存储单个位或字,时钟信号控制寄存器加载输入值
随机访问存储器(存储器):存储多个字,用地址来选择该读或该写哪个字

4.3:Y86的顺序实现

•将处理组织成阶段:
取指:从存储器读取指令字节,地址为程序计数器PC的值,icod指令代码、ifun指令功能、valc四字节常数、valp下一条指令的地址=PC值+已取出指令长度
译码:从寄存器文件读入最多两个操作数
执行:算数/逻辑单元要么执行指令指明的操作(根据ifun的值),计算存储器引用的有效地址,要么增加或减少栈指针,得到的值称为valE
访存:将数据写入存储器或从存储器读出数据,值为valM
写回:最多可以写两个结果到寄存器文件
更新PC:将PC设置成下一条指令地址
•SEQ硬件结构:
取值:将程序计数器寄存器作为地址,指令存储器读取指令的字节
译码:两个读端口,读寄存器valA和valB
执行:根据指令的类型,将算数/逻辑单元用于不同的目的
访存:数据存储器读出或写入一个存储器字
•SEQ的实现包括组合逻辑和两种存储器设备:
时钟寄存器:程序计数器和条件码寄存器
随机访问存储器:寄存器文件、指令存储器和数据存储器

Y86模拟器截图:






代码截图及链接:


https://git.oschina.net/LJQ5303/week6.git

posted @ 2016-10-23 23:49  20145303刘俊谦  阅读(166)  评论(2编辑  收藏  举报