本文为笔者学习阶段的一个记录,多有错漏与描述不清之处,欢迎大家批评指正。
前言
在先前学习 Linux 汇编中对中断的处理时,对于中断恢复线程时将 LR - 4 的操作一直不是很理解
直到了解清楚 ARM 的三级流水线工作流程,才解开了这个谜题。
若你对三级流水线的工作流程不熟悉,那么很可能像笔者先前一样,对 lr -4 的理解不够清晰。
一、CPU 寄存器简介
本文只讨论 32 位 ARM 处理器:
R0-R12: 通用寄存器,用于存储任意数据。
R13 (SP): 栈指针寄存器。
R14 (LR): 链接寄存器,用于保存程序跳转后需要返回的地址(跳转前的PC值)。
R15 (PC): 程序计数器,用于指向当前执行指令的地址。
CPSR:当前程序状态寄存器,包含条件码标志、中断禁止位、处理器模式。
二、三级流水线的工作流程
流水线作业是什么样的?假设有三个工人组成一条流水线,那么工作流程如下:
① 甲执行产品 1 的步骤 a;
② 甲执行产品 2 的步骤 a,乙执行产品 1 的步骤 b;
③ 甲执行产品 3 的步骤 a,乙执行产品 2 的步骤 b,丙执行产品 1 的步骤 c。
④ 甲执行产品 4 的步骤 a,乙执行产品 3 的步骤 b,丙执行产品 2 的步骤 c。
⑤ …