2018-2019-1 20165304 《信息安全系统设计基础》第四周学习总结
Posted zl1998827
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2018-2019-1 20165304 《信息安全系统设计基础》第四周学习总结相关的知识,希望对你有一定的参考价值。
教材学习内容总结
程序员可见的状态:Y86-64程序中的每条指令都会读取或修改处理器状态的某些部分,这称为程序员可见状态。包括:程序寄存器、条件码、程序状态、程序计数器和内存。
Y86-64指令:Y86-64指令是x86-84指令集的一个子集。它只包括8字节整数操作。有4个整数操作指令:addq、subq、andq和xorq。有7个跳转指令:jmp、jle、jl、je、jne、jge和jg。有6个条件传送指令:cmovle、cmovl、cmove、cmovne、cmovge和cmovg。
汇编机器码间的转换。
Y86-64状态码:
代码值1,命名为AOK,表示正常操作;
代码值2,命名为HLT,表示遇到器执行halt指令;
代码值3,命名为ADR,表示遇到非法地址;
代码值4,命名为INS,表示遇到非法指令。
Y86-64指令集:
Y86-64程序寄存器标识符:
Y86-64指令集的功能码:
逻辑门:逻辑门是数字电路的基本计算单元。它们产生的输出,等于它们输入位值的某个布尔函数。包括:与(AND)、或(OR)和非(NOT)。
组合电路:将狠多的逻辑门组合成一个网,就能构建计算块。
组合电路和HCL布尔表达式
字级的组合电路和HCL整数表达式
实现所有Y86-64指令所需要的计算可以被组织成6个基本阶段。包括:取指、译码、执行、访存、写回合更新PC。
取指:取指阶段从内存读取指令字节,地址为程序计数器的值。
译码:译码阶段从寄存器文件读入最多两个操作数,得到相应的值,并读入指令指明的寄存器。
执行:执行阶段,ALU要么执行指令指明的操作,计算内存引用的有效地址,要么增加或减少栈指针。
访存:访存阶段可以将数据写入内存,或者从内存读出数据。
写回:写回阶段最多可以写两个结果到寄存器文件。
更新PC:将PC设置成下一条指令的地址。
SEQ的时序:
SEQ的实现包括组合逻辑和两种存储器设备:时钟寄存器和随机访问存储器。
组织计算原则:从不回读。处理器从来不需要为了完成一条指令的执行而去读由该指令更新了的状态。
上周考试错题总结
1.
下面的跳转指令与ZF有关的是()
A .jmp
B .je
C .js
D .ja
E .jb
F .jbe
解析:
2.
假设用ADD指令完成C表达式t=a+b的功能,有关条件码寄存器的说法正确的是()
A .若t==0 ,则ZF=1
B .若t<0, 则CF=1
C .若t<0, 则SF=1
D .若(a<0==b<0)&&(t<0 != a<0), 则OF=1
E .若(a<0==b<0)&&(t<0 != a<0), 则CF=1
F .leaq指令不影响条件码寄存器
G .cmp指令不影响条件码寄存器
解析:课本p135
ZF:零标志。最近的操作得出的结果为0,故当t==0,ZF=1,A对
CF:进位标志。最近的操作使最高位产生了进位。B E不对
SF:符号标志。最近的操作得到的结果为负数。
OF:溢出标志。最近的操作导致一个补码溢出——正溢出或负溢出。(a<0==b<0)&&(t<0!=a<0) 有符号溢出,故选D
leaq指令不改变任何条件码,选F
CMP指令根据两个操作数之差来设置条件码。除了只设置条件码而不更新目的寄存器之外,与SUB指令的行为是一样的。
3.
x86-64 Linux中,有关MOV,下面正确的是()
A .movw $0x50, %eax
B .movw %bp, %sp
C .movl ($1234), ($2345)
D .movb $10, (%rsp)
E .movq %rax, 4(%rbp)
F .movb (%rdi, %rcx), %ah
解析:课本p122 ,p123, 注意内存之间不能直接mov,要用寄存器中转。b,w,l,q表示的长度要和寄存器匹配。
以上是关于2018-2019-1 20165304 《信息安全系统设计基础》第四周学习总结的主要内容,如果未能解决你的问题,请参考以下文章
2018-2019-1 20165304 《信息安全系统设计基础》第七周学习总结