当前位置:网站首页>ARM PC=PC+8 最便于理解的阐述
ARM PC=PC+8 最便于理解的阐述
2022-07-06 09:17:00 【csdndulala】
https://www.cnblogs.com/douzi2/p/4934202.html
为啥是“PC = PC + 8”;
“PC = PC + 8”其实这样写容易让人蒙了。“PC = PC + 8”真正含义应该是:
执行处代码地址 = PC - 8;
也就是说,”PC指向的地址“领先“执行处代码地址”8个字节;
也就是说“PC = PC + 8”中的第二个PC,其实表示是“执行处代码地址”
然后,理解为啥是8?
首先,arm的地址宽度是4个字节,所以每执行一条指令,PC就会自加4.
而一条指令要完全被arm吸收,需要多个步骤,拿arm7举例它采用了3级流水线技术。

流水线,对于我们这种玩FPGA的再熟悉不过了,以3级流水线来说,就是把一件事情分成3个步骤,每个步骤同时处理,
前两个周期为潜伏期,无法出结果,之后结果会源源不断的输出。
想象一下,一条条指令,就像一个个等待加工的产品,奔跑在传送带上,而“FETCH”,“DECODE”,“EXECUTE”,就是3道加工工序。
1、在第一个周期,PC指向第一条程序指令,进行取值(FETCH),DECODE,和EXECUTE步骤“扑空”
2、在第二个周期,接着PC + 4,PC指向第二条程序指令进行取值(FETCH),DECODE处理了在一个周期,FETCH到的指令,EXECUTE再次扑空。
3、在第三个周期,依然PC + 4,PC指向第三条程序指令进行取值(FETCH),DECODE处理了在二个周期,FETCH到的指令,
EXECUTE这时,处理在一个周期FETCH到的指令,这个指令同时也就是在第二个周期DECODE的指令。
4、之后每个时钟周期,EXECUTE都能处理到经过两次加工的code,不过PC始终领先于它,也就是:执行处代码地址 = PC - 8;
而ARM9通过增加流水线级数,简化了流水线的各级逻辑,进一步提高了处理器的性能。采用5级流水线技术,但是同样是“PC = PC + 8”,
这是为什么呢?我们来看看图:

我们发现EXECUTE仍然在第三个步骤,及符合:执行处代码地址 = PC - 8;只要理解这一点阅读代码也就够了。
边栏推荐
- STM32型号与Contex m对应关系
- Wangeditor rich text component - copy available
- Linux Yum install MySQL
- There are three iPhone se 2022 models in the Eurasian Economic Commission database
- Mall project -- day09 -- order module
- sklearn之feature_extraction.text.CountVectorizer / TfidVectorizer
- List and set
- Oppo vooc fast charging circuit and protocol
- MySQL realizes read-write separation
- Detailed explanation of express framework
猜你喜欢

ESP8266使用arduino连接阿里云物联网

MySQL数据库面试题

Stage 4 MySQL database

FTP文件上传文件实现,定时扫描文件夹上传指定格式文件文件到服务器,C语言实现FTP文件上传详解及代码案例实现

Pytorch four commonly used optimizer tests

PyTorch四种常用优化器测试

Comparaison des solutions pour la plate - forme mobile Qualcomm & MTK & Kirin USB 3.0

Principle and implementation of MySQL master-slave replication

A possible cause and solution of "stuck" main thread of RT thread

Kaggle竞赛-Two Sigma Connect: Rental Listing Inquiries
随机推荐
List and set
MySQL realizes read-write separation
MongoDB
[CDH] cdh5.16 configuring the setting of yarn task centralized allocation does not take effect
[template] KMP string matching
Analysis of charging architecture of glory magic 3pro
几个关于指针的声明【C语言】
Reading notes of difficult career creation
[Kerberos] deeply understand the Kerberos ticket life cycle
Matlab learning and actual combat notes
R & D thinking 01 ----- classic of embedded intelligent product development process
MongoDB
Dead loop in FreeRTOS task function
Pytorch four commonly used optimizer tests
Nodejs connect mysql
Come and walk into the JVM
荣耀Magic 3Pro 充电架构分析
Hutool中那些常用的工具类和方法
arduino获取随机数
[CDH] modify the default port 7180 of cloudera manager in cdh/cdp environment