打印
[ZLG-ARM]

GNU ARM 汇编快速入门续1

[复制链接]
1171|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
miclinux|  楼主 | 2009-6-1 11:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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 , = 相当于PC寄存器或其它寄存器的长转移
  (3)ADR: adr 相于PC寄存器或其它寄存器的小范围转移
  (4)ADRL: adrl 相于PC寄存器或其寄存器的中范围转移

相关帖子

沙发
arminfo| | 2009-6-1 13:09 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

64

帖子

0

粉丝