新聞中心

ARM位操作和偽指令介紹

作者: 時(shí)間:2016-11-10 來源:網(wǎng)絡(luò) 收藏
ARM匯編程序由指令(ARM指令和偽指令)、偽操作和宏指令組成。
ARM偽操作:
GET,通常用于包含定義常量的源文件,如用EQU定義的外設(shè)地址,類似于C語言中用include好含頭文件。(匯編語言中被包含的文件常以.inc結(jié)尾)GET 2440addr.inc
AREA、ENTRY和END
AREA操作常用于定義一個(gè)段。通常一個(gè)ARM源程序至少需要一個(gè)代碼段。
ENTRY用于指定程序的入口點(diǎn)。
END用于告訴匯編編譯器源文件已經(jīng)結(jié)束。
EXPORT和IMPORT
EXPORT 偽操作用于聲明外部標(biāo)號(hào),即當(dāng)前標(biāo)號(hào)是本源文件中定義的,在其他文件中可能會(huì)被引用。
IMPORT 偽操作用于告訴編譯器當(dāng)前的符號(hào)不是本源文件中定義的,而是在其他源文件中定義的,在本源文件中可能引用該符號(hào)。
EQU用于定義常量。提醒,在每條ARM指令前必須有空格,但是用EQU定義常量時(shí),必須頂格寫,否則編譯器會(huì)報(bào)錯(cuò)。
LTORG用于聲明一個(gè)文字池,所謂文字池就是一個(gè)數(shù)據(jù)緩沖區(qū)。
ALIGN偽操作通過調(diào)整地址指針使當(dāng)前位置滿足一定的對(duì)齊方式。在ARM代碼中要求地址符號(hào)是字對(duì)齊的。
MACRO和MEND 偽操作用于宏定義。
MACRO表示宏定義的開始,MEND表示宏定義的結(jié)束。用MACRO和MEND定義的一段代碼,稱為宏體。這樣,在程序中就可以通過宏指令多次調(diào)用該代碼段。
MACRO
{$label}MACRO Name {$parameter}{$parameter}……
;這里添加自己的代碼
MEND
MAP和FIELD
MAP用于定義內(nèi)存表的首地址,其中MAP也可以用^表示。FIELD用于定義一個(gè)內(nèi)存表中的數(shù)據(jù)域,其中FIELD可以用#表示。MAP和FIELD組合類似于C語言中定義一個(gè)數(shù)組,MAP指向數(shù)組的首地址,F(xiàn)IELD用于分配數(shù)組中的各個(gè)元素。
#define pISR_SWI (*(unsigned*)(_ISR_STARTADDRESS+0x8))
強(qiáng)制轉(zhuǎn)換后,可以對(duì)pISR_SWI進(jìn)行賦值,調(diào)用。
_ISR_STARTADDRESS EQU 0x33FFFF00
^ _ISR_STARTADDRESS
HandleReset # 4
HandleUndef # 4
HandleSWI # 4
HandlePabort # 4
HandleDabort # 4
ARM偽指令:ADRL;LDR;DCD SPACE


關(guān)鍵詞: ARM位操作偽指

評(píng)論


技術(shù)專區(qū)

關(guān)閉