2010-12-01 12:57 【转】ARM GNU 汇编伪指令简介

1 ARM GNU 汇编伪指令简介
(1)abort
       .abort 停止汇编
(2)align
      .align absexpr1,absexpr2
     以某种对齐方式,在未使用的存储区域填充值. 第一个值表示对齐方式,4, 8,16或
     32. 第二个表达式值表示填充的值
(3)if...else...endif
     .if
     .else
     .endif: 支持条件预编译
(4)include
     .include "file": 包含指定的头文件, 可以把一个汇编常量定义放在头文件中
(5)comm
     .comm symbol, length:
     在bss段申请一段命名空间,该段空间的名称叫symbol, 长度为length. Ld连接器在连接
     会为它留出空间
(6)data
     .data subsection: 说明接下来的定义归属于subsection数据段
(7)equ
     .equ symbol, expression: 把某一个符号(symbol)定义成某一个值(expression).该
     指令并不分配空间
(8)global
     .global symbol: 定义一个全局符号, 通常是为ld使用
(9)ascii
     .ascii "string": 定义一个字符串并为之分配空间
(10)byte
     .byte expressions: 定义一个字节, 并为之分配空间
(11)short
     .short expressions: 定义一个短整型, 并为之分配空间
(12)int
     .int expressions: 定义一个整型,并为之分配空间
(13)long
     .long expressions: 定义一个长整型, 并为之分配空间
(14)word
     .word expressions: 定义一个字,并为之分配空间, 4 bytes
(15)macro/endm
     .macro: 定义一段宏代码, .macro表示代码的开始, .endm表示代码的结束, .exitm
     跳出宏, 示例如下:
     .macro SHIFTLEFT a, b
     .if \b < 0
      mov \a, \a, ASR #-\b
     .exitm
     .endif
      mov \a, \a, LSL #\b
     .endm
(16)req
      name .req register name: 为寄存器定义一个别名
(17)code
     .code [16|32]: 指定指令代码产生的长度, 16表示Thumb指令, 32表示ARM指令
(18)ltorg
     .ltorg: 表示当前往下的定义在归于当前段,并为之分配空间

2 ARM GNU专有符号
(1)@ 表示注释从当前位置到行尾的字符.
(2)# 注释掉一整行.
(3); 新行分隔符.

3 操作码
(1)NOP: nop 空操作, 相当于MOV r0, r0
(2)LDR: ldr <register> , =<expression> 相当于PC寄存器或其它寄存器的长转移
(3)ADR: adr <register> <label> 相于PC寄存器或其它寄存器的小范围转移
(4)ADRL: adrl <register> <label> 相于PC寄存器或其寄存器的中范围转移

转自:http://www.cppblog.com/jb8164/archive/2008/01/22/41661.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值