ARM指令裡幾個特殊符號

2021-05-02 21:53:44 字數 3239 閱讀 5756

華清遠見嵌入式學院

講師。總結一下arm指令裡幾個特殊符號的意義

特殊符號   對應指令     含義 

=                dcb           分配一片連續的位元組儲存單元並用指定的資料初始化

&               dcd           分配一片連續的字儲存單元並用指定的資料初始化

%              space        分配一片連續的儲存單元

^                map           定義乙個結構化記憶體表的首位址

#               filed         定義乙個結構化記憶體表的資料域(經常和map一起使用,乙個定義起始位址,乙個定義長度)

*                equ            為程式中的常量、標號等定義乙個等效的字元名稱,類似於c語言中的#define

!                                   位址更新

[                                   相當於if

|                                   相當於else

]                                   相當於endif

常見的資料定義偽指令有如下幾種:

— dcb 用於分配一片連續的位元組儲存單元並用指定的資料初始化。

— dcw ( dcwu ) 用於分配一片連續的半字儲存單元並用指定的資料初始化。

— dcd ( dcdu ) 用於分配一片連續的字儲存單元並用指定的資料初始化。

— dcfd ( dcfdu )用於為雙精度的浮點數分配一片連續的字儲存單元並用指定的資料初始 化。

— dcfs ( dcfsu ) 用於為單精度的浮點數分配一片連續的字儲存單元並用指定的資料初 始化。

— dcq ( dcqu ) 用於分配一片以 8 位元組為單位的連續的儲存單元並用指定的資料初始 化。

— space 用於分配一片連續的儲存單元

— map 用於定義乙個結構化的記憶體表首位址

— field 用於定義乙個結構化的記憶體表的資料域

1、 dcb 語法格式: 標號 dcb 表示式 dcb 偽指令用於分配一片連續的位元組儲存單元並用偽指令中指定的表示式初始化。其中,表示式可以為 0 ~ 255 的數字或字串。 dcb 也可用 「 = 」 代替。

使用示例: str dcb 「 this is a test ! 」 ;分配一片連續的位元組儲存單元並初始化。

2、 dcw(或dcwu) 語法格式: 標號 dcw (或 dcwu ) 表示式 dcw (或 dcwu )偽指令用於分配一片連續的半字儲存單元並用偽指令中指定的表示式初始化。 其中,表示式可以為程式標號或數字表示式。。 用 dcw 分配的字儲存單元是半字對齊的,而用 dcwu 分配的字儲存單元並不嚴格半字對齊。

使用示例: datatest dcw 1 , 2 , 3 ;分配一片連續的半字儲存單元並初始化。

3、 dcd(或dcdu) 語法格式: 標號 dcd (或 dcdu ) 表示式 dcd (或 dcdu )偽指令用於分配一片連續的字儲存單元並用偽指令中指定的表示式初始化。其中,表示式可以為程式標號或數字表示式。 dcd 也可用 「 & 」 代替。 用 dcd 分配的字儲存單元是字對齊的,而用 dcdu 分配的字儲存單元並不嚴格字對齊。

使用示例: datatest dcd 4 , 5 , 6 ;分配一片連續的字儲存單元並初始化。

4、 dcfd(或dcfdu) 語法格式: 標號 dcfd (或 dcfdu ) 表示式 dcfd (或 dcfdu )偽指令用於為雙精度的浮點數分配一片連續的字儲存單元並用偽指令中指定的表示式初始化。每個雙精度的浮點數佔據兩個字單元。用 dcfd 分配的字儲存單元是字對齊的,而用 dcfdu 分配的字儲存單元並不嚴格字對齊。

使用示例: fdatatest dcfd 2e115 , -5e7 ;分配一片連續的字儲存單元並初始化為指定的雙精度數。

5、 dcfs(或dcfsu) 語法格式: 標號 dcfs (或 dcfsu ) 表示式 dcfs (或 dcfsu )偽指令用於為單精度的浮點數分配一片連續的字儲存單元並用偽指令中指定的表示式初始化。每個單精度的浮點數佔據乙個字單元。 用 dcfs 分配的字儲存單元是字對齊的,而用 dcfsu 分配的字儲存單元並不嚴格字對齊。

使用示例: fdatatest dcfs 2e5 , -5e - 7 ;分配一片連續的字儲存單元並初始化為指定的單精度數。

6、 dcq(或dcqu) 語法格式: 標號 dcq (或 dcqu ) 表示式 dcq (或 dcqu )偽指令用於分配一片以 8 個位元組為單位的連續儲存區域並用偽指令中指定的表示式初始化。 用 dcq 分配的儲存單元是字對齊的,而用 dcqu 分配的儲存單元並不嚴格字對齊。

使用示例: datatest dcq 100 ;分配一片連續的儲存單元並初始化為指定的值。

7、 space 語法格式: 標號 space 表示式 space 偽指令用於分配一片連續的儲存區域並初始化為 0 。其中,表示式為要分配的位元組數。 space 也可用 「 % 」 代替。

使用示例: dataspace space 100 ;分配連續 100 位元組的儲存單元並初始化為 0 。

8、 map 語法格式: map 表示式 map 偽指令用於定義乙個結構化的記憶體表的首位址。 map 也可用 「 ^ 」 代替。 表示式可以為程式中的標號或數學表示式,基址暫存器為可選項,當基址暫存器選項不存在時,表示式的值即為記憶體表的首位址,當該選項存在時,記憶體表的首位址為表示式的值與基址暫存器的和。 map 偽指令通常與 field 偽指令配合使用來定義結構化的記憶體表。

使用示例: map 0x100 , r0 ;定義結構化記憶體表首位址的值為 0x100 + r0 。

9、 filed 語法格式: 標號 field 表示式 field 偽指令用於定義乙個結構化記憶體表中的資料域。 filed 也可用 「 # 」 代替。 表示式的值為當前資料域在記憶體表中所佔的位元組數。 field 偽指令常與 map 偽指令配合使用來定義結構化的記憶體表。 map 偽指令定義記憶體表的首位址, field 偽指令定義記憶體表中的各個資料域,並可以為每個資料域指定乙個標號供其他的指令引用。 注意 map 和 field 偽指令僅用於定義資料結構,並不實際分配儲存單元。

使用示例: map 0x100 ;定義結構化記憶體表首位址的值為 0x100 。 a field 16 ;定義 a 的長度為 16 位元組,位置為 0x100 b field 32 ;定義 b 的長度為 32 位元組,位置為 0x110 s field 256 ;定義 s 的長度為 256 位元組,位置為 0x13

ARM指令裡幾個特殊符號

總結一下 arm指令裡幾個特殊符號的意義 特殊符號 對應指令含義 dcb 分配一片連續的位元組儲存單元並用指定的資料初始化 dcd 分配一片連續的字儲存單元並用指定的資料初始化 space 分配一片連續的儲存單元 map 定義乙個結構化記憶體表的首位址 filed 定義乙個結構化記憶體表的資料域 經...

ARM指令裡幾個特殊符號

總結一下 arm指令裡幾個特殊符號的意義 特殊符號 對應指令含義 dcb 分配一片連續的位元組儲存單元並用指定的資料初始化 dcd 分配一片連續的字儲存單元並用指定的資料初始化 space 分配一片連續的儲存單元 map 定義乙個結構化記憶體表的首位址 filed 定義乙個結構化記憶體表的資料域 經...

ARM彙編特殊符號 彙編符號引用

特殊符號 對應指令 含義 示例 map 定義結構化記憶體表 map 4096 記憶體表首位址為4096 field 定義記憶體表中的資料,結合map指令使用 map 4096 stacksvc field 256 定義從4096開始的256位元組為svc的堆疊空間。space 分配一塊記憶體,並用 ...