计算机组成原理知识点总结
组成原理
发布于2020年5月19日 11:11
阅读数 9797
2.信息的表示和处理
熟悉二进制、十六进制与十进制的关系
整数:补码,有符号表示与无符号表示
加法:判断溢出的方法:双符号位法
3.程序的机器级表示
汇编代码,能看懂,根据些许C语言推到汇编代码或者根据汇编代码反推C语言就行
数据格式:b(字节 -- 8位),w(字 -- 16位),l(双字 -- 32位)
数据传输指令: movs(有符号)、movz(无符号)
算术和逻辑操作:
inc D(D+1)
dec D(D-1)
neg D(-D)
not D(~D)
add S, D
sub S, D
imul S, D
xor S, D
or S, D
and S, D
sal k, D 左移
shl k, D 左移
sar k, D 算术右移
shr k, D 逻辑右移
leal S, D:加载有效地址
→ 可运用为加法运算
控制:
CF:进位标志(1:进位)
ZF:零标志(1:为0)
SF:符号标志(1:为负)
OF:溢出标志(1:溢出)
指令
同义名
描述
jmp X
直接跳转
je X
jz
相等/零
jne X
jnz
不相等/非零
js X
负数
jns X
非负数
jg X
jnle
大于(有符号>)
jge X
jnl
大于或等于(有符号>=)
jl X
jnge
小于(有符号
jle X
jng
小于或等于(有符号<=)
ja X
jnbe
超过(无符号>)
jae X
jnb
超过或相等(无符号>=)
jb X
jnae
低于(无符号
jbe X
jna
低于或相等(无符号<=)
great :less
above:below
跳转语句与循环语句的汇编代码
栈帧(stack frame): %esp 栈指针(表示栈当前指的位置),%ebp 帧指针,%eip 指令指针寄存器
push X:栈指针先上移(减4),再存数据
pop X:移出数据,栈指针下移(加4)
call X:先保存返回地址,再转入子过程
熟悉下练习题 3.33。
4.12 Y86指令
会看就行,与写下面的 4.3 有关
4.2 逻辑设计和硬件控制语言HCL
四条表达式:
判断位相等:bool eq = (a && b) || (!a && !b)
单位多路复用器:bool out = (s && a) || (!s && b)
情况表达式:
int Out = [
select_1 : expr_1
select_2 : expr_2
...
1 : expr_n
]
集合关系:bool s1 = code in {
a1 a2 ... an };
4.3 Y86的顺序实现
组成阶段:取指
→ 译码
→ 执行
→ 访存
→ 写回
→ 更新PC
→ 取指
→ ...
根据以上
6 个过程可以写出以下格式:
取指
icode : ifun
rA, rB
valC
valP
译码
valA
valB
运算
valE
Cond, Cnd
访存
valM
写回
dstE
dstM
PC更新
PC
稍微详细的补充:
icode : ifun:分别是指令代码与指令功能,分别占四位(bit)。
rA, rB:指明两个寄存器操作数指示符(就是记录使用哪两个寄存器)
valC:一个四字节常数字(涉及到常数或者内存的时候出现)
valP:PC值加上已取出指令的长度(汇编可见的左侧地址的下一条)
valA, valB:从rA和rB读出的值
valE:经过运算得到的值(一般有ALU的运算或者栈针的移动)
Cond, Cnd:检查跳转码和跳转条件时是否选择分支产生的信号与判断
valM:写入存储器或从存储器写出的值
dstE, dstM:写回寄存器文件的最多是两个
PC:下一条指令地址(指令地址)
6.存储器层次结构
局部性:倾向于引用(邻近于其他最近引用过的数据项的)数据项,或者最近引用过的数据项本身。
良好的时间局部性:被引用过一次的存储器位置可能在不远的将来再被多次引用。
良好的空间局部性:被引用过一次的存储器位置可能在不远的将来引用附近的一个存储器位置。
另外的知识点:存储技术、存储器层次结构、高速缓存(了解就行)