arm学习笔记四(arm伪指令)

arm伪指令
 
符号定义伪指令
 定义arm汇编程序中的变量、对变量赋值以及定义寄存器的别名
 
 定义全局变量 
 gbla(全局数字变量,初始化值为0) 
GBLA 全局变量名
   示例代码如下:
GBLA Test1;定义全局数字变量test1
Test1 SETA 0x123;将该变量赋值为0x123
 gbll(全局逻辑变量,初始化为F)
  GBLL 全局变量名
   示例代码如下:
GBLL Test2;定义全局逻辑变量test2
Test2 SETL {TRUE};将变量赋值为真
 bgls(全局字符串变量,初始化为空)
   GBLS 全局变量名
   示例代码如下:
GBLS Test3;定义全局字符串变量test3
Test3 SETS "Testing";将变量赋值为testing
   
 定义局部变量 
 lcla 

 lcll

 lcls
 
 对变量赋值 
 seta


 setl


 sets


 为通用寄存器列表定义名称 rlist
    在LDM/STM指令中,列表中的寄存器访问次序根据寄存器的编号由低到高
    与列表中的寄存器的排列次序无关
 语法格式:
名称 RLIST {寄存器列表}
 示例代码如下:
  RegList RLIST (R0-R5,R8,R10);定义RegList寄存器列表
  




数据定义伪指令


 DCB 分配一片连续的字节存储单元,并且用指令中指定的表达式初始化
 语法格式:
   标号 DCB  表达式
 示例代码如下:
  str DCB "this is a test!";分配一片连续的字节存储单元并初始化
  


 SPACE 分配一片连续的存储区域并初始化为0,表达式的值为要分配的字节数
  语法格式:
    标号 SPACE 表达式
  示例代码如下:
   DataSpace SPACE 100;分配连续100字节的存储单元并初始化为0


 MAP 定义一个结构化内存表的首地址
  语法格式:
    MAP 表达式{,基址寄存器}
   示例代码如下:
MAP 0X100,R0;定义结构化内存表首地址为0x100+R0
 
 FILED  定义一个结构化内存表中的数据域
  语法格式:
     标号  FILED 表达式
  示例代码如下:
   MAP 0X0100;定义结构化内存表首地址的值为0x100
   A FILED 16;定义A的长度为16字节,位置为0x100
   B FILED 32;定义B的长度为32字节,位置为0x110
   C FILED 256;定义C的长度为256字节,位置为0x130


 
汇编控制伪指令
 IF ELSE ENDIF
 语法格式:
IF 逻辑表达式
    指令序列1
ELSE
    指令序列2
ENDIF
 示列代码如下:
 GBLL Test;
 IF Test=TRUE
     指令序列1
 ELSE 
     指令序列2
 ENDIF
 
 WHILE WEND
  语法格式:
WHILE 逻辑表达式
  指令序列
        WEND
  示例代码如下:
   GBLA Counter;声明一个全局数学变量
   Counter SETA 3;赋值
   WHILE Counter<10
指令序列
   WEND
 
 MACRO MEND
 
 MEXIT
宏指令






其它伪指令


 AREA 定义一个代码段或数据段
 语法格式:
  AREA 段名 属性1,属性2
 常用属性:
 CODE:定义代码段,默认为readonly
 DATE:定义数据段,默认为readwirte
 READONLY:只读
 READWRITE:可读可写
 ALIGN:对齐方式  语法格式:ALIGN {表达式{,偏移量}}
 示例代码如下:
   AREA Init,CODE,READONLY;定义一个名为init的代码段,属性为只读
   AREA Init,CODE,READONLY,ALIEN=3;指定后面的指令为8字节对齐
  


 CODE16(CODE32)通知编译器,其后的指令序列为16位的thumb指令
 


 ENTRY 指定汇编程序的入口点
 示例代码如下:
    AREA Init,CODE,READONLY
    ENTRY;指定应用程序的入口点


 
 EQU 为程序中的常量,标号等定义一个等效的字符名称(类似于define)
 语法格式:
     名称 EQU 表达式{,类型}
 示例代码如下:
 Test EQU 50;定义标号Test的值为 50
 Addr EQU 0x55,CODE32;定义Addr 的值为0x55,且该处为32位的arm指令




 EXPORT 在程序中声明一个全局的标号,该标号可在其他的文件中引用 
  语法格式:
   EXPORT 标号
  示例代码:
   AREA Init,CODE,READONLY
   EXPORT Stest;声明一个可全局引用的标号Stest 

posted @ 2013-02-21 21:46  retacn_yue  阅读(258)  评论(0编辑  收藏  举报