ARM常用指令

(持续更新ing)

 

mov指令

在ARM体系中,mov只能用于数据在(寄存器之间)的移动或者往寄存器中写入立即数。

mov    r1,   r2 

限制:但把立即数赋给一个寄存器,对立即数的范围有要求。只能是由8bit连续有效位通过偶

数次移位能得到的数。如果立即数超出这个范围,就没办法用一条MOV指令给寄存器赋值。

 

 

ldr指令

LDR是将(内存中的数)载入到寄存器,LDR可以载入立即数。

ldr    R1,   =0xE0000000  (R1=0xE0000000) 

ldr    R1    0xE0000000  (将内存中地址为0xE0000000的内容载入到R1)

ldr    R1,  [R0]  (将R0中的数所指定的地址的内容传输到R1)

 

str指令

STR是将(寄存器中的数)载入内存。

str    R1,    [R0]      将R1中的内容传输到R0中的数所指定的地址的内存中去

 

 

  • mov 只能用于寄存器之间的传输,传输立即数时有条件限制,只能装载通过偶数次移位能得到的立即数。
  •  
  • str/ldr 可以用于寄存器与内存之间的数据交换,str是将寄存器中的数载入内存,ldr是将内存中的数载入到寄存器,ldr可以载入立即数。并且ldr在往寄存器中载入立即数时,不受立即数的限制,而mov受其限制。
  •  
  • mov,本身就是一个32位的机器码,除了指令码本身,它不可能再带一个可以表示32bit的数字,所以用了其中的12bit数来表示立即数,其中4bit表示移位的移数(循环右移,且数值X2),8bit用来表示要移位的一个基数。

 

 

lldr指令

LDR指令用于从(存储器)中将一个32位的字数据传送到目的寄存器中。该指令通常用于从存储器中读取32位的字数据到通用寄存器,然后对数据进行处理。当程序计数器PC作为目的寄存器时,指令从存储器中读取的字数据被当作目的地址,从而可以实现程序流程的跳转。

LDR   R0,[R1]                  ;将存储器地址为R1的字数据读入寄存器R0。

 

补充

机器码分析

我我们编写的汇编程序还是不够底层,CPU是直接对机器码进行操作的,所以还需要用汇编器将汇编代码转换成机器码才能被CPU处理。

 

ARM指令格式

分析:

  •   31--28是条件段,取值表如下所示(这里的例子中mov后面没有跟条件,所以是AL,Always (unconditional) ,对应的机器码为1110

ARM常用指令_第1张图片

 

 

  •  27--26为保留位,恒为00

 

  • 25位:Distinguishes between the immediate and register forms of

 

  • 标志shifter_operand段存放的是立即数还是寄存器。若为寄存器则置0,若为立即数则置1。

 

  • 24--21为opcode,标明指令的类型,下面是opcode的取值表

ARM常用指令_第2张图片

 

  

  • 20位:Signifies that the instruction updates the condition codes.表明该指令是否会影响程序状态字寄存器。是则置1,否则置零。

 

  • 19--16位:Specifies the first source operand register.标明第一个源操作数寄存器,见每个指令的格式,有的有Rd,有的没有。

 

  • 由MOV指令的一般格式可以看出,他是没有使用Rd的,所以这几位填全0,其他使用到Rn的,这几位填通用寄存器标号的二进制值。如r2,则为0010。

 

  • 15--12位:Specifies the destination register. 标明目的寄存器,填充方法同Rn。

 

  • 11--0位:Specifies the second source operand.  标明第二个源操作数,若为立即数则填该立即数的二进制值,若为通用寄存器则填通用寄存器标号的二进制值。

 

立即数

 

立即数的求值(以mov为例)

mov    r1,    #0x400

 

用11- 0位来表示立即数。假设移动到寄存器的数是0x400。对应的对应的二进制位:0b 0000 0000 0000 0000 0000 0100 0000 0000 

1前面包括1有24位,,即有22/2 = 11,对应的二进制为0b 1011。所以高四位就是1011,低八位为

1

参考:https://blog.csdn.net/LiuBo_01/article/details/80149708

 

 

你可能感兴趣的:(ARM)