ARM从寄存器14中读取程序指令在哪里?

时间:2012-11-18 21:46:55

标签: arm opcode instructions

我如何理解ARM体系结构的基本工作原理;

第15个(r15)有15个主寄存器是程序计数器(PC)。

如果程序计数器指向特定的寄存器,那么如何运行超过~14行的程序?

显然这不是真的,但我不明白你如何只用15个寄存器来组合一个大程序?我错过了什么?

3 个答案:

答案 0 :(得分:5)

程序计数器指向内存,而不是另一个寄存器。

答案 1 :(得分:5)

注册表不存储程序代码。程序代码在主存储器中,程序计数器指向下一条指令的存储器位置。

其他寄存器是高速位置,用于在处理应用程序期间存储临时或频繁访问的值。

答案 2 :(得分:0)

最简单的形式是程序(指令存储器),数据存储器,堆栈存储器和寄存器。

ARM指令存储在指令存储器中,它们是一系列命令,告诉处理器该做什么。它们永远不会存储在处理器的寄存器中。程序计数器只指向该指令,该指令只是一个命令,在基本形式中有一个操作码(操作代码)和变量/文字..

所以会发生的是从程序计数器指向的位置从内存中读取指令(取出)。它不会被加载到寄存器中,而是被解码的控制单元(即知道要做什么操作,即add,sub,mov等)以及在何处读取/存储其输入和输出。

那么操作和存储的输入/输出在哪里? ARM体系结构是一种加载/存储体系结构,它意味着它对加载到其寄存器中的数据进行操作,即R1,R2 .. R7 .. .. ..其中寄存器可以被认为是临时变量,其中所有输入和输出都是存储。使用寄存器是因为它们如此之快并且以与处理器频率相同的速度运行,而不是以较慢的存储器运行。

现在问题是,如何首先用值填充这些寄存器?

这些值可以存储在数据存储器或堆栈存储器中,因此有指令将它们复制到这些寄存器,然后是对它们进行操作的指令并将值存储在寄存器中,然后是其他指令来复制结果回到记忆中。某些指令也可以加载具有常量的寄存器。

Instruction 1 // Copy Variable X into R1 from memory
Instruction 2 // Copy Variable Y into R2 from memory
ADD, R3, R1, R2 // add them together
Instruction 3 // Copy back the result into Memory

我试图让它变得尽可能简单,有很多细节要涵盖。需要书籍:))