首页 > 技术文章 > 20155322 2017-2018-1《信息安全系统设计》第七周学习总结

blackay03 2017-11-04 23:21 原文

20155322 2017-2018-1《信息安全系统设计》第七周学习总结


教材学习内容总结

第四章:

  • 关于ISA:

    • 一个处理器支持的指令和指令的字节级编码就是这个处理器的ISA
    • ISA包括:指令集、指令集编码、基本数据类型、一组编程规范、寄存器、寻址模式、存储体系、异常事件处理、中断和外部I/O
    • ISA在编译器编写者(CPU软件)和处理器设计人员(CPU硬件)之间提供了一个抽象层:
    • 处理器设计者:依据ISA来设计处理器
    • 处理器使用者(如:写编译器的牛*程序员):依据ISA就知道CPU选用的指令集,就知道自己可以使用哪些指令以及遵循哪些规范
  • 关于Y86:

    • 程序员的可见状态:寄存器、存储器、条件码、PC和程序状态。
    • 8个寄存器,每个寄存器存储32位
    • 条件码是一个二进制的寄存器
    • pc记录当前正在执行的指令的地址
    • Y86可使用虚拟地址访问存储器

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

  • 问题:x86和y86有什么不同?

  • 解决:通过上网搜索,我了解到其实Y86指令是不存在的,这是教材作者受到 IA32指令,也就是“x86”的启发,所假想出来的一种处理器体系结构,Y86指令集的数据类型、指令和寻址方式都要少一些,字节级编码也比较简单。但是它仍然足够完整。

  • 补充:Y86的基本指令

    • halt :这个指令会停止指令的执行。在IA32中有个与之相当的指令 hlt,不过IA32的应用程序不允许使用这条指令,因为它会导致整个系统暂停运行。而对于Y86来讲,执行 halt 指令会导致处理器停止,并将状态码设置为 HLT。

    • nop:这是一个占位指令,它不做任何事情,后续为了实现流水线,它有一定的作用。

    • xxmovl:这是一系列的数据传送指令,其中r代表寄存器,m代表存储器,i代表立即数。比如rrmovl指令,则代表将一个寄存器的值,赋给另外一个寄存器。

    • OPl:这包括4个整数操作指令,addl、subl、andl和xorl。他们只对寄存器数据进行操作。

    • jXX:包括7个跳转指令,jmp,jle,jl,je,jne,jge,jg。根据分支指令的类型和条件码的设置来选择分支。

    • cmovXX:包括6个条件传送指令,cmovle,cmovl,cmove,cmovne,cmovge和cmovg,只发生在两个寄存器之间,不会将数据传送到存储器。

    • call:指令将返回地址入栈,然后跳到目的地址。

    • ret:call是过程调用,ret是返回。将返回地址入PC,并跳到返回地址。

    • pushl和popl:指令实现了地址的入栈和出栈

代码调试中的问题和解决过程

本周结对学习情况

-20155302

  • 结对学习内容:
    • 教材第四章

代码托管

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

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 0/0 1/1 10/10
第三周 200/200 2/3 10/20
第四周 100/300 1/4 10/30
第五周 200/500 3/7 10/40
第六周 500/1000 2/9 30/70
第七周 500/1500 2/11 15/85

参考:软件工程软件的估计为什么这么难软件工程 估计方法

  • 计划学习时间:15小时

  • 实际学习时间:15小时

(有空多看看现代软件工程 课件
软件工程师能力自我评价表
)

参考资料

推荐阅读