《计算机组成原理》(第九版)学习整理
计算机体系结构:最常见的有冯诺依曼结构、哈佛结构等
冯诺依曼结构:程序和数据放在同一个存储空间内 (ARM指令集)
哈佛结构:程序和数据分开存放,提升了CPU运行效率
常用专业词汇
ALU 算术逻辑单元:电路中的 与或 门电路,是CPU的核心组成部分
指令和操作码:有时会交替使用,指令通过操作码实现动作(例如ADD、MOVE、STR),也包括操作数。
RISC 精简指令集计算机:通过一套精简指令集,简化计算机指令功能,使指令的平均执行周期减少,从而提高计算机的工作主频,同时大量使用通用寄存器来提高子程序执行的速度。
CISC 复杂指令系统计算机
ISA总线 三个组成部分:寄存器集、寻址方式和指令格式
CPSR当前状态寄存器
1.5储存程序的概念
1.单地址指令 Operation address
2.双地址指令 Operation destination, source
1.6.1 储存层次
寄存器存放处理器的工作数据。
Cache是缓存常用数据的快速存储器。(高速缓存)
DRAM存放工作数据块。
硬盘保存程序和数据。
硬盘速度比寄存器慢2000万倍。
Cache系统与计算机的地址总线和数据总线相连,监听CPU与存储器之间的事物。
2.4.2二进制补码运算
补码运算过程:对一个二进制数先取反后+1
特性:减一个数等于加一个数的补码,所以补码相当于把减法运算转换成加法运算。
补码运算导致进位的原因:
n位二进制运算Z=X-Y,用X加上Y的补码来计算。
Y的补码是2^ n-Y ,则有Z=X+(2^ n-Y)= 2^ n+(X-Y)
得到了X-Y的结果但是会多出一个2^n进位,而进位被丢弃。
对一个数两次求补会得到这个数本身。
补码0被表示为0…00
2.6.1 IEEE浮点数
3.1存储程序计算机
CUP中最重要的寄存器是程序计数器(PC),它记录了要执行的下一条指令的地址,有时PC也叫指令指针。
常用汇编指令(ARM)
ARM指令的基本格式为:
< Opcode > {< Cond >} { S } < Rd > , < Rn > { , < Opcode2 > }
其中,< >内的项是必需的,{ }内的项是可选的。
ARM 命令详解
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ftx2540993425/article/details/29926075
CMP r0,r1 比较r0和r1大小,自动更新状态标志位
寄存器介绍
控制单元CU执行寄存器IR中的命令:通过三态门(TTL逻辑电路构成高、低电平和高阻态电路)和寄存器时钟
转:处理器架构、指令集和汇编语言,三者有何关系? - young cc的回答 - 知乎
https://www.zhihu.com/question/23474438/answer/119887585
3.1.1扩展处理器:常量处理
LDR r1,200 将地址200的存储单元的内容加载到r1寄存器中
LDR r1,#200 将200这个常量直接加载到寄存器r1中
3.1.2流控制
条件码寄存器CCR各位作用:
Z:记录结果是否为0
N:二进制结果是否为负
C:是否产生进位
V:是否算数溢出
对于ARM处理器有的指令不会自动更新CCR寄存器(在ARM中称为CPSR寄存器),需要在指令后加“S”表示更新。例如(SUBS、ADDS)
3.2.2 寻址方式
指针寄存器: 含有操作数地址的寄存器
立即数寻址(立即寻址): 指令中包含了立即数,例如ADD P, Q , #5
#5 在指令中储存,不需要寄存器和储存器,它的值不能在程序过程中改变。
直接寻址(绝对寻址): 指令中包含了操作数地址,例如ADD P, Q, R
表示把存储单元Q和存储单元R的内容相加,并将结果存储到存储单元P。
间接寻址(寄存器间接寻址): 指令中包含了寄存器地址(其中存储了操作数地址)
获取一个操作数需要三个步骤:读指令(PC / IR),读操作数地址到寄存器(PC->MAR),读出实际的操作数(主存 -> MBR)
3.3.1ARM寄存器集
r13(SP)堆栈指针寄存器
r14(LR)连接寄存器,一是用来保存子程序返回地址;二是当异常发生时,LR中保存的值等于异常发生时PC的值减4。
r15(PC)程序计数器寄存器
3.3.1 ARM指令集
3.4.1 ARM程序结构
汇编伪指令AREA定义代码段,该段名为ARMtest,属性为CODE,READONLY,汇编伪指令END告诉汇编器已到达程序末尾
3.4.2 汇编器的实际考虑因素(汇编伪指令)
EQU
DCD 在存储器中预留32位字的存储空间,并把右边的值加载到存储空间
ALIGN强制32位地址对齐,用0补齐
ADR把地址加载到目的寄存器中
ADR和LDR的区别:
ADR将存储地址加载到寄存器,使寄存器成为指针
LDR将寄存器的内容复制到目的寄存器,或者将寄存器中指针所指的内容加载到目的寄存器,不可直接将存储内容复制到寄存器。
3.5.1 算数指令
3.5.2 位操作
ARM不支持NOT指令,但是可以用EOR指令来实现NOT操作
逻辑运算的应用
AND 与 0位置0,1位保留
OR 或 0位保留,1位置1
NOT 非 取反
EOR 异或 0位保留,1位取反
3.5.3 移位操作
ARM仅实现了以下5种移位操作
(循环左移的操作通过循环右移指令实现)
3.5.4 指令编码
3.6.2 条件分支
3.6.3 测试与比较指令(自动更新条件码)
CMP 两个操作数相减,更新标志位
CPN
TST 通过与操作比较操作数,更新标志位
TEQ 确定两个操作数是否相等,如果相等将Z位置1,否则清0,与CMP区别是不影响溢出标志状态。
3.6.4 分支与循环结构
3.7ARM寻址方式
3.7.1 立即数寻址
3.7.2 寄存器间接寻址
寄存器间接寻址通过三个读操作来访问一个操作数:
3.7.7load/store的指令编码
3.8.1ARM对子程序的支持
ARM的分支链接指令BL,自动将返回的地址保存在寄存器r14