我是靠谱客的博主 沉默超短裙,最近开发中收集的这篇文章主要介绍ARM指令寄存器ARM指令ADRL伪指令协处理器访问指令,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • 寄存器
  • ARM指令
    • MOV
    • MVN
    • SUB
    • ADD
    • AND
    • ORR
    • BIC
    • CMP
    • TST
    • 条件
    • BL
    • DCD
  • ADRL
    • LSL
    • ROR
    • MRS MSR
    • 寄存器装载和存储
  • 伪指令
    • 数据伪指令
    • 操作类伪指令
  • 协处理器访问指令
    • 协处理器访问

寄存器

ARM总共有37个寄存器,31个通用寄存器,6个状态寄存器
应用程序工作在user模式,内核工作在supervisor svc模式
R13 堆栈指针
R14 LR链接寄存器(函数返回,中断返回)
R15 PC指针
SPSR save保存进入中断后的CPSR,中断退出让其值恢复

在这里插入图片描述
N:代表negtive
Z:代表zero(相等)
I:代表取消中断
F:代表取消快速中断
M:代表模式

在这里插入图片描述

在这里插入图片描述
寻址方式

  1. 立即数寻址
    ADD R0, R0, #0x3f; R0<-R0+0x3f
  2. 寄存器寻址
    ADD R0, R1, R2; R0<-R1+R2
  3. 寄存器间接寻址
    LDR R0, [R2]; R0<-[R2]
  4. 基址变址寻址(将R1+4的地址里面的 给R0)
    LDR R0, [R1, #4]; R0<-[R1+4]
  5. 相对寻址
    BL NEXT MOV PC, LR跳转链接寄存器

ARM指令

使用@符号来表示注释
{}表示可写可不写的,<>表示一定要写的

MOV

在这里插入图片描述

MVN

在这里插入图片描述
#4 = 0b0100 取反 符号位1后面为0b1011,因为是负数,因此真正的值为符号位不变,其余位置取反加1,0b0100+0b1 = 0b0101也就是5,算上符号位就是-5.

SUB

操作数1必须是寄存器!
在这里插入图片描述

ADD

在这里插入图片描述

AND

在这里插入图片描述

ORR

在这里插入图片描述

BIC

标准ARM汇编%表示二进制,GNU中使用0b
在这里插入图片描述

CMP

比较结果在状态寄存器N表示
在这里插入图片描述

TST

条件

在这里插入图片描述

BL

在这里插入图片描述

在这里插入图片描述

DCD

DCD 指令分配一个或多个字的内存,按4字节边界对齐,并定义内存的初始运行内容。DCDU是相同的,除了其内存对齐是任意的。

在这里插入图片描述
比如:
在这里插入图片描述
在这里插入图片描述

ADRL

在这里插入图片描述

LSL

在这里插入图片描述

ROR

在这里插入图片描述

MRS MSR

move register to status register
move status register to register
在这里插入图片描述

在这里插入图片描述

寄存器装载和存储

store register
loader register
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述


伪指令

数据伪指令

伪/指令本身并没有所对应的机器码,它只是在编译的时候起作用,或者转
化为其他的实际指令来运行。

  • global(全局符号,后面c语言也可以调用)
  • ascii(字符串)
  • byte(字节)
  • word
  • data(数据段)
  • equ(宏)
  • align(下面的数据对齐)
.data@数据段
hello:
.ascii "helloworld"@定义一个hello数据值为helloworld
.equ DA, 0x89@宏定义

操作类伪指令

mov指令所使用操作数不能超过8位,后面shifter_operand12位不是全部用来装数据,其中还有4位是用来看这个数据是否左移或者右移的!
在这里插入图片描述
使用ldr伪指令就可以达到超过8位数据赋值给寄存器,只不过ldr用伪指令的方式立即数要使用=号表示
ldr r0, =0x1ff

nop 是空操作,其实质是mov r0, r0没有意义,消耗时间

协处理器访问指令

CP15:coproces
提供16组寄存器
在这里插入图片描述

在这里插入图片描述

协处理器访问

使用mcr, mrc
在这里插入图片描述

在这里插入图片描述

0x080003D4 E8940007 LDM r4,{r0-r2}
将r4寄存器地址的内容,顺序加载3个到r0,r1,r2中,如果r4后面加!,则加载完后,r4的值会成为r4当前+3个位置。

arm汇编指令之数据块传输(LDM,STM)详见

最后

以上就是沉默超短裙为你收集整理的ARM指令寄存器ARM指令ADRL伪指令协处理器访问指令的全部内容,希望文章能够帮你解决ARM指令寄存器ARM指令ADRL伪指令协处理器访问指令所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部