ARM常用汇编指令讲解

ARM常用汇编指令讲解,第1张

指令名称作用
EQU给数字常量取一个符号名,相当于C语言中的define
AREA汇编一个新的代码段或者数据段
SPACE分配内存空间
PRESERVE8当前文件栈需按照8字节对齐
EXPORT声明一个标号具有全局属性,可被外部的文件使用
DCD以字为单位分配内存,要求4字节对齐,并要求初始化这些内存
PROC定义子程序,与ENDP成对使用,表示子程序结束
WEAK弱定义,如果外部文件声明了一个标号,则优先使用外部文件定义的标号, 如果外部文件没有定义也不出错。要注意的是:这个不是ARM的指令,是编译器的,这里放在一起只是为了方便。
IMPORT声明一个标号具有全局属性,可被外部的文件使用
B跳转到一个标号
ALIGN编译器对指令或者数据的存放地址进行对齐,一般需要跟一个立即数,缺省表示4字节对齐。 要注意的是:这个不是ARM的指令,是编译器的,这里放在一起只是为了方便。
END到达文件的末尾,文件结束
IF,ELSE,ENDIF汇编条件分支语句,跟C语言的if else类似
MRS加载特殊功能寄存器的值到通用寄存器
MSR存储通用寄存器的值到特殊功能寄存器
CBZ比较,如果结果为 0 就转移
CBNZ比较,如果结果非 0 就转移
LDR从存储器中加载字到一个寄存器中
LDR[伪指令]加载一个立即数或者一个地址值到一个寄存器。举例:LDR Rd, ==== label,如果label是立即数, 那Rd等于立即数,如果label是一个标识符,比如指针,那存到Rd的就是label这个标识符的地址
LDRH从存储器中加载半字到一个寄存器中
LDRB从存储器中加载字节到一个寄存器中
STR把一个寄存器按字存储到存储器中
STRH把一个寄存器存器的低半字存储到存储器中
STRB把一个寄存器的低字节存储到存储器中
LDMIA加载多个字,并且在加载后自增基址寄存器
STMIA存储多个字,并且在存储后自增基址寄存器
ORR按位或
BX直接跳转到由寄存器给定的地址
BL跳转到 标号对应的地址,并且把跳转前的下条指令地址保存到 LR
BLX跳转到由寄存器REG给出的的地址,并根据 REG 的 LSB 切换处理器状态,还要把转移前的下条指 令地址保存到 LR。ARM(LSB=0),Thumb(LSB=1)。Cortex-M3 只在 Thumb 中运行, 就必须保证 reg 的 LSB=1,否则一个 fault 打过来

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/875265.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)

保存