一篇文章快速了解ARM指令集

文章目录

ARM指令集

1、ARM指令集格式

2、ARM指令集的特点

ARM汇编指令

1、ARM汇编指令的格式

2、ARM汇编指令用法

ARM指令集分为的五大类


ARM指令集

1、ARM指令集格式

ARM指令集(ARM920T的核(core)的指令集)的格式如下图所示,可以看出,无论哪一种指令,长度都是32位,属于典型的精简指令集(RISC)。

2、ARM指令集的特点

(1)大多数指令可带条件码(Cond)执行;

(2)大多数指令带后缀的(S)码,即指令结果会影响标志位,有的指令带链接(L)执行;

(3)大多数指令在单个周期内可执行完成。访问存储单元使用Load-store规范的方式。带条件码(Cond)的32位ARM指令的格式如图1-9所示。

ARM汇编指令

1、ARM汇编指令的格式

<opcode> {<cond>}  {S} <Rd>,<Rn> {,<operand2>}

其中,{ }表示可选项,

opcode:操作码,

cond:条件码,

S:影响 CPSR 程序状态寄存器,

Rd:目标寄存器,

Rn:第一寄存器作为第一个操作数,

operand2:第二个操作数。

cond 条件码

2、ARM汇编指令用法

下面通过简单的例子说明ARM汇编指令用法:

ADDEQRO,R1,R2;   //If zero flag is set,then RO=R1+R2

ADDSRO,R1,R2;     //RO=R1+R2,并影响标志位.

ADDEQSRO,R1,R2;       //如果CPSR的Z=1(即结果为0),则RO=R1+R2,并影响CPSR标志位.

ARM指令集分为的五大类

ARM指令集可分为以下五大类:

  • (1)分支指令
  • (2)数据处理指令
  • (3)加载/存储指令
  • (4)协处理器指令
  • (5)其他指令

最典型的例子简述。

1、分支指令

不带链接的分支指令:

B Label;

带链接的分支指令:

BL Label; //LR=PC+4, 记住返回地址

2、数据处理指令

主要是算数运算,比较指令,逻辑运算和数据传输指令。

这些指令在reg里运行而不是在memory。它们一般都具有一个或两个操作数,第一个操作数总是一个寄存器Rn,而第二个操作数通过移位器送给 ALU。

3、加载/存储指令

ARM 的指令集属于RISC,对存储单元的访问采用了规范的加载(Load)/存储 (Store)方式。

比较重要的 Load/Store 命令有:

STMFD SP!,{R0-R12,LR,PC};   //将 R0-R12、LR、 PC 的内容存到 SP 指向的存储空间中去(压入堆栈)。
LDMFD SP!,{R0-R12,PC};     //将 SP 指向的存 储空间的内容放入 ARM 中的 R0-R12、PC 中去(弹出堆栈)。

这两个命令在函数调用中非常有用,在 C 语言中调用一个函数生成的 ARM 汇编通常如下图所示:

在 C 语言中调用一个函数生成的 ARM 汇编

 

  

  • 对于上面的指令集,到底怎么理解?
  • ARM架构的指令集与常见的另一种x86架构的指令集有何不同?

​​​​​​​↓↓可以看下面的这个视频作为参考↓↓

ARM架构和CPU的x86架构有啥区别?指令集又是什么?

 
发布了59 篇原创文章 · 获赞 16 · 访问量 7207

猜你喜欢

转载自blog.csdn.net/qq_42605300/article/details/104833442