常用ARM汇编指令
来源:互联网 发布:网络维护培训学校 编辑:程序博客网 时间:2024/05/21 17:34
相对跳转指令 b bl
Bl除了跳转之外,还将返回地址(bl的下一条指令的地址)保存在lr寄存器中;
这两条指令可跳转范围是当前指令的前后32MB;
数据传送指令mov 地址读取伪指令 ldr
mov 把一个寄存器的值赋给另一个寄存器,或把一个常数(立即数)赋给寄存器.
mov 目标寄存器,操作寄存器或常数
mov r1,r2 ;r1= r2
mov r1,#4096 ;r1= 4096
大范围的地址读取伪指令
ldr 大范围的地址读取伪指令
ldr r1,=4097 ;r1= 4097
ldr r1,=label
label:
…… ;获取代码的绝对地址
内存访问指令:ldr,str,ldm,stm
ldr 当第二个参数前面没有”=”时,表示内存访问指令
ldr r1,[r2,#4] 表示把r2+4的内存单元数据读取到r1中
ldr r1,[r2] 表示把r2 的内存单元数据读取到r1中
ldr r1,[r2],#4 表示把r2 的内存单元数据读取到r1中,然后r2+4
str r1,[r2,#4] 表示把r1的数据保存到r2+4内存单元
str r1,[r2] 表示把r1的数据保存到r2 内存单元
str r1,[r2],#4 表示把r1的数据保存到r2 内存单元,然后r2+4
ldm{cond}<addressing_mode> <rn>{!} <register list>{^}
stm{cond}<addressing_mode> <rn>{!} <register list>{^}
{cond} 指令执行条件
<addressing_mode> 地址变化模式
ia(IncrementAfter) 事后递增方式
ib(Incrementbefore) 事先递增方式
da(DecrementAfter) 事后递减方式
db(Decrementbefore) 事先递减方式
<rn> 保存内存的地址,如果加上感叹号,指令执行后rn更新为下一个内存单元的地址;
<register list> 寄存器列表
{^} 表示操作在用户模式下,而不是在当前特权模式下的寄存器
stmdb sp!, {r0-r12,lr} r0-r12,lr保存到sp表示的内存中,
! 使得指令执行后 sp =sp-14*4;
加减法指令 add sub
add r1,r2,#1 表示 r1 = r2 +1
sub r1,r2,#1 表示 r1 = r2 - 1
程序状态寄存器的访问指令 msr mrs
msr cpsr,r0 复制r0到cpsr
mrs r0, cpsr 复制cpsr到r0
其他的伪指令
.extern main
.text
.global _start
_start:
.extern 定义一个外部符号(可以是变量也可以是函数),上面的代码表示文件中引用的main是一个外部函数
.text 表示下面的语句都属于代码段
.global 将本文件中的某个程序标号定义为全局的,把_start 定义为全局函数;
- 常用ARM汇编指令
- ARM常用汇编指令
- ARM常用汇编指令
- 常用ARM汇编指令
- ARM常用汇编指令
- ARM常用汇编指令
- ARM常用汇编指令
- ARM常用汇编指令
- ARM常用汇编指令
- ARM常用汇编指令
- 常用ARM汇编指令
- ARM 汇编常用指令
- 常用ARM汇编指令
- ARM常用汇编指令
- 常用ARM汇编指令
- ARM 汇编常用指令
- 常用ARM汇编指令
- ARM常用汇编指令
- 采访:关于 Go 语言和《Go Web编程》
- P2P流媒体技术方案
- 黑马程序员——IO流(一)
- 史上最全设计模式导学目录(完整版)
- 基本的排序算法:冒泡排序、插入排序、希尔排序、选择排序、归并排序、快速排序、堆排序
- 常用ARM汇编指令
- eclipse 下github 安装
- webbench学习之getopt_long,atio
- 傅里叶变换、拉普拉斯变换、Z变换
- Jersey开发环境搭建(maven tomcat eclipse集成艰苦之旅)
- SDIO的SPI模式驱动分析
- 写博客了
- ios 开发中获取字符串中重复的字符的rang
- svn常见问题-----转自MyJavaBlog的专栏