完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
dcd指令可以一片连续的空间,并初始化?
问题1: 那么这块空间在哪? 例如: “标签+dcd+表达式(常数)” 所分配的空间的位置写在了哪里? 问题2: 在M3系列的startup.s 文件当中,所有的中断函数都进行了DCD,这样有什么用?为什么要这么做 比如 “ DCD UserCodeArea DCD SystemUndefinedHandler DCD SystemSwiHandler DCD SystemPrefetchHandler DCD SystemAbortHandler DCD SystemReserv DCD SystemIrqHandler DCD SystemFiqHandler ” 其意义是什么 为什么中断函数需要这样子声明,而普通的函数却不需要呢?(起码不写在startup里面) 问题3: 在建立堆栈的时候:“ FiqStackSpace SPACE FIQ_Stack_Legth FiqStack DCD FiqStackSpace + FIQ_Stack_Legth ” 这里使用dcd指令有什么用,指明栈顶的位置? |
|
相关推荐
6个回答
|
|
DCD伪汇编代码的含义 DCD(或DCDU)
语法格式: 标号 DCD(或DCDU) 表达式 DCD(或DCDU)伪指令用于分配一片连续的字存储单元并用伪指令中指定的表达式初始化。其中,表达式可以为程序标号或数字表达式。DCD也可用“&”代替。 用DCD分配的字存储单元是字对齐的,而用DCDU分配的字存储单元并不严格字对齐。 使用示例: DataTest DCD 4,5,6 ;分配一片连续的字存储单元并初始化。 |
|
|
|
|
|
|
|
顶起啊,这个东西极端不清楚
|
|
|
|
在中断向量表中不直接LDR PC,"异常地址".而是使用一个标号,然后再在后面使用DCD定义这个标号,其原因是:
LDR 指令只能跳到当前PC 4kB 范围内,而B 指令能跳转到32MB 范围,而现在这样在LDR PC, "xxxx"这条指令不远处用"xxxx"DCD 定义一个字,而这 个字里面存放最终异常服务程序的地址,这样可以实现4GB 全范围跳转。 |
|
|
|
1.DCD伪指令用于分配一片连续的字存储单元并用伪指令中指定的表达式初始化,也就是对地址写值。感觉是申请了一段RAM空间
2.在中断向量表中不直接LDR PC,"异常地址".而是使用一个标号,然后再在后面使用DCD定义这个标号,其原因是:LDR 指令只能跳到当前PC 4kB 范围内,而B 指令能跳转到32MB 范围,而在LDR PC, "xxxx"这条指令不远处用"xxxx"DCD 定义一个字,这个字里面存放最终异常服务程序的地址,这样可以实现4GB 全范围跳转。 3.FiqStackSpace是标号,相当与地址,实际上就是在FiqStackSpace SPACE FIQ_Stack_Legth 这个语句给分配的空间的首地址(如SPACE从 0x31000000开始,那么标号就是0x31000000),FiqStackSpace+ FIQ_Stack_Legth 是这个地址空间的结束地址,将FiqStack指向这个地址,当做栈的顶部,该栈向下生长,长度FIQ_Stack_Legth |
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
969 浏览 0 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
954 浏览 2 评论
2066 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1162 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1587 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 06:38 , Processed in 0.599725 second(s), Total 51, Slave 45 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号