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

实验楼学习内容总结

运行make指令后

查看目录下内容,可以看到只有.ys文件

用make all命令编译后

编译后查看目录下内容,可以看到已经有编译后的.yo文件,用vim进入后可以查看

课本第239页图4-7上的代码,在系统中叫做asum.yo,把它的内容打印在屏幕上:

其余代码测试结果相同

学习中的问题和解决过程

1.不支持第二变址寄存器和任何寄存器值的伸缩

伸缩是没有像IA32,如%eax32位,可以划分出%ax16位,还可以划分出%al,%ah
变址寄存器是指这是和IA32的比较,P113页有Imm(Eb,Es,s)的通用寻址方式,Y86不支持

2.如何将汇编码转换成字节编码

以练习题1为例.如irmovl $15,%ebx
irmovl:i表示立即数,r表示寄存器;即是将一立即数付给寄存器。
由ir可知:第一个字节:30
由$15可知:不访问任何寄存器,指示符字节F。
由%ebx可知:指示符字节3。
根据小端法,将15的十六进制反向写开为0f 00 00 00
因此,该句的字节编码是30f30f000000

3.字节编码中,左边一列的地址偏移量如何确定

以练习题2为例.如0x100:30f3fcffffff/406300080000/00 分三块
第一块30f3fcffffff
30:irmovl(6字节,下一个地址偏移量是6,所以下一个地址是0x106;6字节,所以划分到4前面)
f:立即数
3:%ebx
fcffffff:(小端法)反向写为fffffffc,即是-4
第二块406300080000(分析方法同第一块)
第三块00,即是halt停止
本条指令前的地址偏移量是依据上一条指令所占字节确定的
关于Y86指令,可以通过练习题4.1和4.2,学会看书上的图4-2,4-3,4-4

4.顺序实现时,执行的目的不同时,只是简单地加0,将一个输入传递到输出

课本图4-18第二列:rrmovl rA,rB
valE<——0+vlaA
不需要取第二个寄存器操作数,将第二个输入设为0,把它和第一个操作数相加,得到valE=0+valA=valA

练习题4.11:irmovl $128,%esp
valE<——0+128=128
和rrmovl处理方式类似

5.图4-18,valP=PC值+已取指令长度

已取指令长度:指令所占字节编码,即是字节数。
如rrmovl rA,rB
valP<——PC+2(rrmovl指令长度2字节,所以+2)

6.不是每个阶段都会进行,一些指令会跳过中间的某些阶段

译码:从寄存器文件读入
如irmovl指令,立即数寻址,用不到寄存器,所以不用译码阶段
访存:写入或读出数据从存储器
如rmmovl指令,需要将寄存器值valA写到存储器,或从存储器中读出valM,所以经历访存阶段

代码托管

代码托管连接

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 200/200 2/2 30/30
第二周 300/500 1/3 20/50
第三周 100/600 1/4 20/70
第五周 300/900 1/5 30/100
第六周 136/1036 1/6 20/120

参考资料

posted on 2016-10-19 17:43  20145305解佳玲  阅读(231)  评论(2编辑  收藏  举报