新闻中心

EEPW首页>嵌入式系统>设计应用> 关于汇编ARM指令DCD

关于汇编ARM指令DCD

作者: 时间:2016-11-26 来源:网络 收藏
数据定义(DataDefinition)伪指令

数据定义伪指令一般用于为特定的数据分配存储单元,同时可完成已分配存储单元的初始化。

本文引用地址://m.amcfsurvey.com/article/201611/322059.htm

DCDDCDU用于分配一片连续的字存储单元并用指定的数据初始化。

3、DCD(或DCDU)

语法格式:

标号DCD(或DCDU表达式

DCD(或DCDU)伪指令用于分配一片连续的字存储单元并用伪指令中指定的表达式初始化。其中,表达式可以为程序标号或数字表达式。DCD也可用&代替。

DCD分配的字存储单元是字对齐的,而用DCDU分配的字存储单元并不严格字对齐。

使用示例:

DataTestDCD456;分配一片连续的字存储单元并初始化。

举例1:

SwiFunction
DCDTASK_SW;0
DCDENTER_CRITICAL;1
DCDEXIT_CRITICAL;2
DCDISRBegin;3
DCDChangeToSYSMode;4
DCDChangeToUSRMode;5
DCD__OSStartHighRdy;6
DCDTaskIsARM;7
DCDTaskIsTHUMB;8
DCDOSISRNeedSwap;9
DCDGetOSFunctionAddr;10
DCDGetUsrFunctionAddr;11

TASK_SW
MRSR3, SPSR;保存任务的CPSR

MOVR2, LR;保存任务的PC

举例2:

语句如下:
FiqStackSpace SPACE FIQ_Stack_Legth
FiqStack DCD FiqStackSpace + FIQ_Stack_Legth

最后一条语句,DCD的后面跟FiqStackSpace + FIQ_Stack_Legth,
DCD后面的FiqStackSpace,表示一串空字符,这好理解
但是再上FIQ_Stack_Legth,就不明白了,WHY?

FiqStackSpace是标号,相当与地址,实际上就是在FiqStackSpace SPACE FIQ_Stack_Legth 这个语句给分配的空间的首地址,FiqStackSpace+ FIQ_Stack_Legth 是这个地址空间的结束地址,将FiqStack指向这个地址,当做栈的顶部,该栈向下生长,长度FIQ_Stack_Legth



关键词:汇编ARM指令DC

评论


技术专区

关闭