CONTENTS
备注:
1 本部分文档摘录自ARM网站【 http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0204ic/index.html 】,版权归属于ARM。
2 作者只摘录了部分内容,全面详细的内容清参考ARM网址。
7.3. 数据定义指令
7.3.4. SPACE 或 FILL
SPACE 指令保留一个用零填充的内存块。 % 是 SPACE 的同义词。
FILL 指令保留一个用指定值填充的内存块。
语法
{label} SPACE expr
{label} FILL expr{,value{,valuesize}}
其中:
label
是一个可选的标签。
expr
取值为要填充的字节数或零(请参阅数字表达式)。
value
取值为要填充保留字节的值。value 是可选的,如果省略则为 0。value 在 NOINIT 区中必须为 0。
valuesize
为 value 的大小(字节)。 它可以是 1、2 或 4。valuesize 是可选的,如果省略则为 1。
用法
使用 ALIGN 指令可对齐 SPACE 或 FILL 指令后的任何代码。 有关详细信息,请参阅ALIGN。
另请参阅:
DCB
DCD 和 DCDU
DCDO
DCW 和 DCWU
示例
7.3.5. DCB
DCB 指令可分配一个或多个字节的内存,并定义内存的运行时初值。 = 是 DCB 的同义词。
语法
{label} DCB expr{,expr}…
其中:
expr
可以是:
一个数值表达式,取值为 –128 到 255 之间的整数(请参阅数字表达式)。
用引号括起来的字符串。 字符串的字符加载到内存的连续字节中。
用法
如果 DCB 后面有一个指令,使用 ALIGN 指令可确保该指令是对齐的。 有关详细信息,请参阅ALIGN。
另请参阅:
DCD 和 DCDU
DCQ 和 DCQU
DCW 和 DCWU
SPACE 或 FILL
示例EADWRITE
data1 SPACE 255 ; defines 255 bytes of zeroed store
data2 FILL 50,0xAB,1 ; defines 50 bytes containing 0xAB
与 C 语言字符串不同的是,ARM 汇编器字符串不是空终止的。 可以使用 DCB,按如下方式构造空终止的 C 字符串:
C_string DCB “C_string”,0
7.3.6. DCD 和 DCDU
DCD 指令可分配一个或多个字的内存,在四个字节的边界上对齐,并定义内存的运行时初值。
& 是 DCD 的同义词。
DCDU 与之相同,不过内存对齐是任意的。
语法
{label} DCD{U} expr{,expr}
其中:
expr
可以是:
一个数值表达式(请参阅数字表达式)。
一个程序相对的表达式。
用法
必要时,DCD 可在定义的第一个字前最多插入三个填充字节,以实现四字节对齐。
如果不需要对齐,则可使用 DCDU。
另请参阅:
DCB
DCI
DCW 和 DCWU
DCQ 和 DCQU
SPACE 或 FILL
示例
data1 DCD 1,5,20 ; Defines 3 words containing ; decimal values 1, 5, and 20 data2 DCD mem06 + 4 ; Defines 1 word containing 4 + ; the address of the label mem06 AREA MyData, DATA, READWRITE DCB 255 ; Now misaligned ... data3 DCDU 1,5,20 ; Defines 3 words containing ; 1, 5 and 20, not word aligned
发表评论