《计算机组成原理》学习整理


计算机体系结构:最常见的有冯诺依曼结构、哈佛结构等
冯诺依曼结构:程序和数据放在同一个存储空间内 (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大小,自动更新状态标志位

常用ARM指令
寄存器介绍

在这里插入图片描述
在这里插入图片描述
控制单元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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值