2017-2018-1 20155308 《信息安全系统设计基础》第六周学习总结

2017-2018-1 20155308
《信息安全系统设计基础》第六周学习总结

教材学习内容总结

  • 指令集体系结构(ISA):一个处理器支持的指令和指令的字节级编码

  • 冒险:一条指令的位置或操作数依赖于其他仍在流水线中的指令

  • Y86指令

  1. movl:irmovl rrmovl mrmovl rmmovl
  2. 整数指令:addl subl andl xorl
  3. 跳转指令:jmp jle jl je jne jge jg
  4. 条件传送指令:cmovle cmovl cmove cmovne cmovge cmovg
  • 将处理组织成阶段
  1. 取指:从存储器读取指令字节,地址为程序计数器PC的值
  2. 译码:从寄存器文件读入最多两个操作数
  3. 执行:算数/逻辑单元要么执行指令指明的操作(根据ifun的值),计算存储器引用的有效地址,要么增加或减少栈指针,得到的值称为valE
  4. 访存:将数据写入存储器或从存储器读出数据,值为valM
  5. 写回:最多可以写两个结果到寄存器文件
    •更新PC:将PC设置成下一条指令地址
  • 进程和并发
  1. 进程是一个执行中程序的实例
    进程提供给应用程序的关键抽象
  2. 一个独立的逻辑控制流,独占地使用处理器;

•并发流:一个逻辑流的执行再时间上与另一个流重叠

•并发:多个流并发地执行的一般现象。即在一个处理器上同时运行多个程序

•并行:两个流并发的运行在不同的处理器核或者计算机上。

教材学习中的问题和解决过程

  • 问题一:popl指令在译码阶段为什么要读两次栈指针?
  • 回答:
    这个问题我自己去查了一下百度,没有一个明确的解释,后来我看了学长学姐的代码,在

http://www.cnblogs.com/20145240lsj/p/6150698.html

找到了一个回答:为了保证和pushl指令执行过程的一致性,先完成存储器的操作再更新栈指针,执行是在访存和写回阶段之前,所以执行阶段先给栈指针加4,但是要用没加过4的原始值作为存储器操作地址。写回时也要用加4的栈指针更新地址,也要用没加4的值作为存储器读地址,所以译码时要访问两次栈指针

  • nop到底有什么作用?感觉它好像没有太大的用处?
  • 解答?这是一个占位指令。没有针对性的用处,知识为了后续的程序实行正常

上周考试错题总结

  1. 下面和代码可移植性相关的C语言属性有( A B C)
    A .#define

B .typedef

C .sizeof()

D .union

  • 解析:#define可以定义宏使得变量可移植,typedef可以使得类型可移植,sizeof()使得不同类型长度可移植。这个知识在书上比较零散,所以需要多加注意。
  1. 多选:我们用一个十六进制的数表示长度w=4的位模式,对于数字的无符号加法逆元的位的表示正确的是()
    A .0x8的无符号加法逆元是0x8

B .0xD的无符号加法逆元是0xD

C .0xF的无符号加法逆元是0x1

D .0xF的无符号加法逆元是1

  1. 多选:
short int v=-12345;
unsigned short uv=(unsigned short) v;

那么
A .v=-12345, uv=53191

B .v=uv=0xcfc7

C .v,uv的底层的位模式不一样

D .v,uv的值在内存中是不一样的

  • 解析:对于有符号数和无符号数,他们之间的转化,值的表示不同,但是位模式是不变。

本周代码托管截图

本周结对学习情况

  • 20155316
  • 结对学习内容书本第八章、第十章的内容

其他(感悟、思考等,可选)

这周的学习任务比较重,所以感觉很吃力,希望自己下次能够安排好时间,所以应该增强自己的学习能力,提高学习效率。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 2000行 30篇 800小时
第五周 200/200 2/5 30/85
  • 计划学习时间:20小时
  • 实际学习时间:30小时
  • 改进情况:学习时间增加了。
原文地址:https://www.cnblogs.com/JIUSHA/p/7751818.html