新闻中心

EEPW首页>嵌入式系统>设计应用> ARM汇编伪指令(1)

ARM汇编伪指令(1)

作者: 时间:2016-11-21 来源:网络 收藏

ARM汇编程序由机器指令、伪指令和宏指令组成。

本文引用地址: //m.amcfsurvey.com/article/201611/319390.htm

1,符号定义伪指令
符号定义伪指令用于定义ARM汇编程序的变量、对变量进行赋值、定义寄存器名称。

全局变量声明: GBLA,GBLL,GBLS
局部变量声明: LCLA,LCLL,LCLS
变量赋值: SETA,SETL,SETS

为一个通用寄存器列表定义名称: RLIST

为一个协处理器的寄存器定义名称: CN
为一个协处理器定义名称: CP

为一个VFP寄存器定义名称: DN,SN
为一个FPA浮点寄存器定义名称: FN

1)GBLA,GBLL,GBLS
全局变量声明,作用范围是包含该变量的源程序。

GBLA variable ;声明全局算术变量
GBLL variable ;声明全局逻辑变量
GBLS variable ;声明全局字符串变量

示例:
GBLL codedbg;声明一个全局逻辑变量
codedbg SETL {TRUE} ;设置变量为TRUE

2)LCLA,LCLL,LCLS
局部变量声明,用于宏定义的体中。

示例:

MACRO;声明一个宏
SENDDAT $dat;宏的原型
LCLA bitno;声明一个局部算术变量
...
bitno SETA 8;设置变量值为8
...
MEND

3),SETA,SETL,SETS
变量赋值伪指令。

示例:

GBLS ErrStr
...
ErrStr SETS "No,semaphone"
...

4),RLIST
为通用寄存器列表定义名称。

示例:

LoReg RLIST {R0-R7};定义寄存器列表LoReg
...
STMFD SP!,LoReg;保存寄存器列表LoReg到堆栈

5),CN
定义协处理器的寄存器。

MemSet CN 1;将协处理器的寄存器1定义为MemSet

6),CP
定义协处理器。

DivRun CN 5;将协处理器5的名称定义为DivRun

7),DN,SN
定义VFP的寄存器。

cdn DN 1 ;将VFP双精度寄存器1的名称定义为cdn
rex SN 3 ;将VFP单精度寄存器3的名称定义为rex

8),FN
定义FPA浮点寄存器。

ibq FN 1 ;将浮点寄存器1的名称定义为ibq

2,数据定义伪指令
数据定义伪指令用于数据表定义、文字池定义、数据空间分配等。

1)LTORG
用于声明一个文字池。

2)MAP
用于定义一个结构化的内存表的首地址。

3)FIELD
定义结构化内存表中的数据域。
MAP,FIELD仅仅定义数据结构,并不实际分配内存单元。

示例:

MAP 0x40003000 ;内存表的首地址为0x40003000
count1 FIELD 4;定义数据域count1,长度为4字节
count2 FIELD 4;定义数据域count2,长度为4字节

LDR R1,count1 ;R1 <- [0x40003000+0x00]
STR R1,count2 ;将R1的值传送到[0x40003000+0x04]

4)SPACE
用于分配一块内存单元,并用0初始化。

5)DCB
分配一段字节内存单元。

6)DCD,DCDU
DCD和DCDU用于分配一段字内存单元,但前者要字对齐,后者不需要。

7)DCDO

8)DCFD,DCFDU

9)DCFS,DCFSU

10)DCI

11)DCQ,DCQU

12)DCW,DCWU

3,报告伪指令
报告伪指令用于汇编报告指示。

1)ASSERT
用于断言错误。
ASSERT Top<>Temp ;断言Top不等于Temp

2)INFO

3)OPT

4)TTL,SUBT

4,汇编控制伪指令
汇编控制伪指令用于条件汇编、宏定义、重复汇编控制等。
IF,ELSE,ENDIF---条件汇编控制
MACRO,MEND---宏定义
WHILE,WEND---重复汇编

5,杂项伪指令
段定义,入口点设置,包含文件,标号导出,引入声明等。

ALIGN边界对齐
AREA段定义
CODE16和CODE32 指令集定义
END汇编结束
ENTRY程序入口
EQU常量定义
EXPORT和GLORBAL 声明一个符号可以被其他文件引用
IMPORT和EXTERN 声明一个外部符号
GET和INCLUDE 包含文件
INCBIN包含不被汇编的文件
KEEP保留符号表中的局部符号
NOFP禁止浮点指令
REQUIRE指示两段之间的依赖关系
PEQUIRE8和PRESERVE8 堆栈8字节对准
RN给特定的寄存器命名
ROUT标记局部标号使用范围的界限

6,ARM伪指令
ADR,ADRL,LDR,NOP,LDFD,LDFS




关键词:ARM汇编伪指

评论


技术专区

关闭