ARM匯編器所支持的偽指令
(3)DCD(ii DCDU)
標號 DCD (或DCDU) 表達式
DCD(或DCDU)偽指令用于分配一片連續(xù)的字存儲單元,并用偽指令中指定的表達式初始化。其中,表達式可以為程序標號或數字表達式。DOD也可用“&”代替。
用DOD分配的字存儲單元是字對齊的,而用DCDU分配的字存儲單元并不嚴格要求字對齊。
(4)DCFD(或DCFDU)
標號 DCFD (或DCFDU) 表達式
DCFD(或DCFDU)偽指令用于為雙精度的浮點數分配一片連續(xù)的字存儲單元,并用偽指令中指定的表達式初始化。每個雙精度的浮點數占據兩個字單元。
用DCFD分配的字存儲單元是字對齊的,而用DCFDU分配的字存儲單元并不嚴格要求字對齊。
(5)DCFS(再戈DCFSU)
標號 DCFS (或DCFSU) 表達式
DCFS(或DCFSU)偽指令用于為單精度的浮點數分配一片連續(xù)的字存儲單元,并用偽指令中指定的表達式初始化。每個單精度的浮點數占據一個字單元。
用DCFS分配的字存儲單元是字對齊的,而用DCFSU分配的字存儲單元并不嚴格要求字對齊。
(6)DCQ(或DCQU)
標號 DCQ (或DCQU) 表達式
DCQ(或DCQU)偽指令用于分配一片以8個字節(jié)為單位的連續(xù)存儲區(qū)域,并用偽指令中指定的表達式初始化。
用DCQ分配的存儲單元是字對齊的,而用DCQU分配的存儲單元并不嚴格要求字對齊。
?。?)SPACE
標號 SPACE 表達式
SPACE偽指令用于分配一片連續(xù)的存儲區(qū)域并初始化為0。其中,表達式為要分配的字節(jié)數。SPACE也可用“%”代替。
?。?)MAP
MAP 表達式〔,基址寄存器)
MAP偽指令用于定義一個結構化的內存表的首地址。MAP也可用“^”代替。
表達式可以為程序中的標號或數學表達式,基址寄存器為可選項,當基址寄存器選項不存在時,表達式的值即為內存表的首地址;當該選項存在時,內存表的首地址為表達式的值與基址寄存器的和。
MAP偽指令通常與FIELD偽指令配合使用來定義結構化的內存表。
(9)FILED
標號 FIELD 表達式
FIELD偽指令用于定義一個結構化內存表中的數據域。FILED也可用“?!贝?。表
達式的值為當前數據域在內存表中所占的字節(jié)數。
FIELD偽指令常與MAP偽指令配合使用來定義結構化的內存表。MAP偽指令定義內存表的首地址,FIELD偽指令定義內存表中的各個數據域,并可以為每個數據域指定一個標號供其他的指令引用。
注意:MAP和FIELD偽指令僅用于定義數據結構,并不實際分配存儲單元。
3.匯編控制(Assembly Control)偽指令
匯編控制偽指令用于控制匯編程序的執(zhí)行流程,常用的匯編控制偽指令包括以下幾種。
?。?)IF、 ELSE、 ENDIF
IF 邏輯表達式
指令序列1
ELSE
指令序列2 ·
ENDTF
r、ELSE、ENDIF偽指令能根據條件的成立與否決定是否執(zhí)行某個指令序列。當r后面的邏輯表達式為真時,則執(zhí)行指令序列1,否則執(zhí)行指令序列2。其中,ELSE及指令序列2可以沒有,此時,當IF后面的邏輯表達式為真時,則執(zhí)行指令序列1,否則繼續(xù)執(zhí)行后面的指令。
IF、ELSE、ENDIF偽指令可以嵌套使用。
(2)WHILE、WEND
WHILE 邏輯表達式
指令序列
IATPhTn
WHILE、WEND偽指令能根據條件的成立與否決定是否循環(huán)執(zhí)行某個指令序列。當WHILE后面的邏輯表達式為真時,則執(zhí)行指令序列,該指令序列執(zhí)行完畢后,再判斷邏輯表達式的值,若為真則繼續(xù)執(zhí)行,一直到邏輯表達式的值為假。
評論