2017-2018-1 20155338 《信息安全系统设计基础》第七周学习总结
教材学习内容总结
Y86-64指令集体系结构
程序员可见状态
概念:Y86程序中的每条指令会读取或修改处理器状态的某些部分,这些称之为处理器的可见状态。
Y86处理器状态可以访问和修改程序寄存器、条件码、程序计数器和存储器,状态码指明程序是不是运行正常。
名词代表及意义:
DMEM:存储器 很大的字节数组,保存着程序和数据。Y86程序用虚拟地址来引用存储器位置。
RF:程序寄存器 %eax,%ecx,%edx,%ebx,%esi,%edi,%esp(出栈、入栈、调用和返回指令作为栈指针),%ebp
Stat:程序状态码 它表明程序执行的总体状态。它会指示是正常运行还是出现了某种异常。
PC:程序计数器 存放当前正在执行的指令
CC:条件码
ZF、SF、OF(都是一位条件码,用来保存最近的算术或逻辑指令所造成影响的有关信息。)
Y86指令
(1)、指令编码长度从1个字节到6个字节不等,一条指令含有一个单字节的指令指示符,或者含有一个单字节的指示符。字段fn指明是某个整数操作、数据移动条件、或是分支条件。
指令集锦:
4个整数操作指令。addl、subl、andl和xorl。
7个跳转指令(jXX)。jne、jl、jle、je、jmp、jge和jg。
有6个条件传送指令(cmovXX)。cmovle、cmovl、cmove、cmovne、cmovge和cmovg。只有当条件码满足所需要的约束时,才会更新目的寄存器的值。
call指令将返回地址入栈,然后跳到目的地址。
ret指令从这样的过程调用中返回。
pushl和popl指令实现了入栈和出栈的功能。
halt指令停止指令的执行。对于Y86来说,执行halt指令会导致处理器停止,并将状态码设置为HLT。
逻辑设计和硬件控制语言HCL
逻辑门
逻辑门是数字电路的基本计算元素,输出为输入位值的某个布尔函数。
HCL表达式:
~~~~
AND: &&
OR: ||
NOT: !
~~~~
逻辑门只对单个位的数进行操作,而不是整个字。
常见的n路操作表示,例:AND门,输入为a,b,c,HCL表示为a&&b&&c
组合电路和HCL布尔表达式
组合电路是将很多的门组合成网构建计算块的电路
构建的两条限制:
网必须是无环的,也就是不能形成一个回路
两个或多个逻辑门的输出不能连接在一起,否则会使线上的信号矛盾
Y86的顺序实现
SEQ的时序
SEQ的实现包括组合逻辑和两种存储器设备:
1、时钟寄存器
2、程序计数器和条件码寄存器
组合逻辑不需要时序或控制。
四个硬件单元需要时序进行明确控制:
~~~~
程序计数器、条件码寄存器、数据存储器和寄存器文件
~~~~
通过一个时钟信号来控制,它触发将新值装载到寄存器以及将值写到随机访问存储器。只需要寄存器和存储器的时钟控制。
代码调试中的问题和解决过程
问题1:
输入
./psim -t -g ../y86-code/asum.yo之后显示找不到/asum.yo命令问题1解决方案:
回到y86-code文件夹,显示的是asumi.yo文件,可能每个人的不一样,把之前的命令改成/asumi.yo就可以打开模拟器了。
安装tcl/tk
下载并解压sim文件夹
输入make clean命令,并make,然后用cat命令查看
打开模拟器
代码托管
结对及互评
本周结对学习情况
20155307
结对学习内容
- 教材第四章
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 2000行 | 15篇 | 200小时 | |
第一周 | 150/150 | 1/1 | 17/17 | |
第二周 | 70/220 | 1/2 | 12/29 | |
第三周 | 100/320 | 1/3 | 10/39 | |
第四周 | 100/420 | 1/4 | 10/59 | |
第五周 | 80/500 | 2/6 | 22/81 | |
第六周 | 300/800 | 2/8 | 30/111 | |
第七周 | 200/1000 | 1/9 | 25/136 |
计划学习时间:20小时
实际学习时间:25小时