ARM伪指令和伪操作

本文详细介绍了ARM汇编中的伪指令,包括数据定义(如.byte、.word等)、内存分配(如.fill、.zero等)、段定义(如.text、.data等)、对齐和宏定义等,以及数据缓冲池的使用和注意事项。
摘要由CSDN通过智能技术生成
(一)GNU汇编书写格式
注释符:@和#
语句分离符: ;
立即数前缀: #或$

段内标号的地址值在汇编时确定
段外标号的地址值在连接时确定

局部标号:主要在局部范围内使用而且局部标号可以重复出现。它由两部分组成,开头是一个直接的数字局部标号,如99,后面加 ‘ : ’,如 66:
在跳转时,根据所加后缀不一样,跳转方向不一样。
1.    f代码地址增加的方向
       b代码地址减少的方向
例:b 99f
2.     就近原则

.代表当前行。  例:b   . 相当于    while(1) 

(二)ARM伪指令

ADR      为小范围的地址读取伪指令
ADRL    为中等范围的地址读取伪指令  
‹LDR      为大范围的地址读取伪指令.
‹NOP     为空操作伪指令
注:ldr伪指令的实质 LDR Rd,=const
  • const如果是有效数,会翻译成MOV ,mvn
  • 如果const不是一个有效数,是把要放进寄存器的立即数存储到一个内存地址中,然后将ldr伪指令翻译成一条ldr指令,然后从该地址中读取这个立即数
adr和adrl伪指令的实质:是将基于PC的相对偏移地址值存放到寄存器中

              ldr    r0,=myarry              @ 取标号所在的地址   绝对地址装载l;
                反汇编:ldr   r0, [pc, #64]     @pc+64地址里存放的时标号的地址
                
                ldr   r1,=0x666666
                反汇编:ldr   r1,[pc, #56]     @pc+56地址里存放0x666666

ldr r0,myarry             @ 取标号所在地址的里面的值;注:这个不是伪指令
                反汇编:ldr   r0,[pc, #4]      @pc+4就是标号的地址,然后从标号的地址里取值    

adr r0,myarry             @ 取标号所在的地址   相对pc的偏移量
                反汇编:add   r0,pc,#6        @pc+6就是标号所在的地址

adrl r0,myarry             @ 取标号所在的地址   相对pc的偏移量
                反汇编:add   r0,pc, #8       @pc+6就是标号所在的地址


(三)GNU编译环境下的伪操作和宏指令

1、常量编译控制伪操作 :

.byte      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值