微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > ARM位操作和伪指令介绍

ARM位操作和伪指令介绍

时间:11-10 来源:互联网 点击:
ARM汇编程序由指令(ARM指令和伪指令)、伪操作和宏指令组成。

ARM伪操作:

GET,通常用于包含定义常量的源文件,如用EQU定义的外设地址,类似于C语言中用include好含头文件。(汇编语言中被包含的文件常以.inc结尾)GET 2440addr.inc

AREA、ENTRY和END

AREA操作常用于定义一个段。通常一个ARM源程序至少需要一个代码段。

ENTRY用于指定程序的入口点。

END用于告诉汇编编译器源文件已经结束。

EXPORT和IMPORT

EXPORT 伪操作用于声明外部标号,即当前标号是本源文件中定义的,在其他文件中可能会被引用。

IMPORT 伪操作用于告诉编译器当前的符号不是本源文件中定义的,而是在其他源文件中定义的,在本源文件中可能引用该符号。

EQU用于定义常量。提醒,在每条ARM指令前必须有空格,但是用EQU定义常量时,必须顶格写,否则编译器会报错。

LTORG用于声明一个文字池,所谓文字池就是一个数据缓冲区。

ALIGN伪操作通过调整地址指针使当前位置满足一定的对齐方式。在ARM代码中要求地址符号是字对齐的。

MACRO和MEND 伪操作用于宏定义。

MACRO表示宏定义的开始,MEND表示宏定义的结束。用MACRO和MEND定义的一段代码,称为宏体。这样,在程序中就可以通过宏指令多次调用该代码段。

MACRO

{$label}MACRO Name {$parameter}{$parameter}……

;这里添加自己的代码

MEND

MAP和FIELD

MAP用于定义内存表的首地址,其中MAP也可以用^表示。FIELD用于定义一个内存表中的数据域,其中FIELD可以用#表示。MAP和FIELD组合类似于C语言中定义一个数组,MAP指向数组的首地址,FIELD用于分配数组中的各个元素。

#define pISR_SWI (*(unsigned*)(_ISR_STARTADDRESS+0x8))

强制转换后,可以对pISR_SWI进行赋值,调用。

_ISR_STARTADDRESS EQU 0x33FFFF00

^ _ISR_STARTADDRESS

HandleReset # 4

HandleUndef # 4

HandleSWI # 4

HandlePabort # 4

HandleDabort # 4

ARM伪指令:ADRL;LDR;DCD SPACE

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top