(转)关于汇编ARM指令DCD
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(转)关于汇编ARM指令DCD相关的知识,希望对你有一定的参考价值。
数据定义( Data Definition )伪指令
数据定义伪指令一般用于为特定的数据分配存储单元,同时可完成已分配存储单元的初始化。
— DCD ( DCDU ) 用于分配一片连续的字存储单元并用指定的数据初始化。
3、 DCD(或DCDU)
语法格式:
标号 DCD (或 DCDU ) 表达式
DCD (或 DCDU )伪指令用于分配一片连续的字存储单元并用伪指令中指定的表达式初始化。其中,表达式可以为程序标号或数字表达式。 DCD 也可用 “ & ” 代替。
用 DCD 分配的字存储单元是字对齐的,而用 DCDU 分配的字存储单元并不严格字对齐。
使用示例:
DataTest DCD 4 , 5 , 6 ;分配一片连续的字存储单元并初始化。
举例1:
SwiFunction
DCD TASK_SW ;0
DCD ENTER_CRITICAL ;1
DCD EXIT_CRITICAL ;2
DCD ISRBegin ;3
DCD ChangeToSYSMode ;4
DCD ChangeToUSRMode ;5
DCD __OSStartHighRdy ;6
DCD TaskIsARM ;7
DCD TaskIsTHUMB ;8
DCD OSISRNeedSwap ;9
DCD GetOSFunctionAddr ;10
DCD GetUsrFunctionAddr ;11
TASK_SW
MRS R3, SPSR ;保存任务的CPSR
MOV R2, 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指令DCD的主要内容,如果未能解决你的问题,请参考以下文章