![](/tpl/common/images/warning-icon.png)
ARM芯片是目前最为成功的控制半导体产品之一。很多经典芯片产品都采用了ARM作为核心,ARM的汇编程序由ARM指令、伪指令、伪操作、宏指令组成。分类如此之多,对于刚刚接触ARM的朋友来说似乎非常容易产生混淆。在本文当中,小编将为大家介绍ARM位操作与伪指令,感兴趣的朋友快来看一看吧。
ARM伪操作
GET,通常用于包含定义常量的源文件,如用EQU定义的外设地址,类似于C语言中用include好含头文件。(汇编语言中被包含的文件常以.inc结尾)GET2440addr.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}MACROName{$parameter}{$parameter}……;这里添加自己的代码
MEND
MAP和FIELD
MAP用于定义内存表的首地址,其中MAP也可以用^表示。FIELD用于定义一个内存表中的数据域,其中FIELD可以用#表示。MAP和FIELD组合类似于C语言中定义一个数组,MAP指向数组的首地址,FIELD用于分配数组中的各个元素。
#definepISR_SWI(*(unsigned*)(_ISR_STARTADDRESS+0x8))
强制转换后,可以对pISR_SWI进行赋值,调用。
_ISR_STARTADDRESSEQU0x33FFFF00
^_ISR_STARTADDRESS
HandleReset#4
HandleUndef#4
HandleSWI#4
HandlePabort#4
HandleDabort#4
ARM伪指令:ADRL;LDR;DCDSPACE
通过以上的介绍,相信大家对于ARM芯片中各类ARM汇编程序指令已经有了一定程度的了解。ARM伪操作通常用于包含定义常量的源文件,而AREA操作则常用于定义一个段,每一种汇编方式都有自己独特的应用场合,大家可以将本文进行收藏,在需要复习的时候作为参考资料。
声明:本内容为作者独立观点,不代表电源网。本网站原创内容,如需转载,请注明出处;本网站转载的内容(文章、图片、视频)等资料版权归原作者所有。如我们采用了您不宜公开的文章或图片,未能及时和您确认,避免给双方造成不必要的经济损失,请电邮联系我们,以便迅速采取适当处理措施;欢迎投稿,邮箱∶editor@netbroad.com。
微信关注 | ||
![]() |
技术专题 | 更多>> | |
![]() |
研发工程师的工具箱 |
![]() |
智慧生活 创新未来 |