ARM汇编指令的问题 DCD

riple   2010-2-26 03:15 楼主
ARM启动代码中的中断向量里有 "b HandlerSWI".执行后将跳到下面。(按照规则,用R0来传递参数,用来选择要执行的函数)

HandlerSWI

cmp r0 ,#4

ldrlo pc ,[pc,r0,lsl #2]
movs pc , lr

swiFunction

DCD fu1
DCD fu2
DCD fu3
DCD fu4

fu1
........
movs pc , lr

fu2
........
movs pc , lr

fu3
........
movs pc , lr

fu4
........
movs pc , lr

请问代码中的DCD怎么理解?书上说是分配一段字的内存单元。不过好像没法和上面的用法联系起来啊?请高人指教。谢谢。

回复评论 (5)

DCD是用来分配一段内存单元
这里实现了类似程序菜单的功能
根据r0中传递进来的索引号,调用fu1、fu2、fu3、fu4中的一个函数
点赞  2010-2-26 08:48
这个分配了的内存单元是函数的地址?他是怎么跳转到函数执行的?
点赞  2010-2-26 13:57
这个还真不太好解释

存储的是fu1的值,而fu1的值就是函数的地址
在指令中通过LDR指令将地址加载到PC中就实现了函数跳转
点赞  2010-2-26 16:14
引用: 引用 3 楼 arnold9009 的回复:
这个还真不太好解释

存储的是fu1的值,而fu1的值就是函数的地址
在指令中通过LDR指令将地址加载到PC中就实现了函数跳转


可是这里没有,ldr指令,所以才很费解。不过也无所谓了。能用就行。
点赞  2010-2-26 16:31
楼主可以买本书或者直接google一堆一堆的。可以系统学习下。
点赞  2010-2-26 16:34
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复