共2条
1/1 1 跳转至页
LPC2114,BOOT 请问一下周工LPC2114 BOOT代码的一个问题

问
177: LDR SP, =StackUsr
0x00000090 E59FD028 LDR R13,[PC,#0x0028]
可是 在指定的位置 0x90 + 0x28 的 地址上的 值是 4000069c
-----------------------------------------------------------
225: StackFiq DCD FiqStackSpace + (FIQ_STACK_LEGTH - 1)* 4
0x000000B4 4000069C MULMI R0,R12,R6
226: StackAbt DCD AbtStackSpace + (ABT_STACK_LEGTH - 1)* 4
0x000000B8 4000069C MULMI R0,R12,R6
227: StackUnd DCD UndtStackSpace + (UND_STACK_LEGTH - 1)* 4
0x000000BC 4000069C MULMI R0,R12,R6
257: AREA MyStacks, DATA, NOINIT, ALIGN=2
0x000000C0 40004000 ANDMI R4,R0,R0
--------------------------------------------------------------
在 后面2个字长的指令 后才是想要的值 0x40004000
为什么呢??? 我用ADS, KEIL仿真器 答 1: 这个流水线技术的原因!虽然你的正在执行的指令在地址0x00000090处,但是这时PC指是指的三级流水线上的预取指指令,所以应该真实的PC值时0x00000090+0x00000008
177: LDR SP, =StackUsr
0x00000090 E59FD028 LDR R13,[PC,#0x0028]
可是 在指定的位置 0x90 + 0x28 的 地址上的 值是 4000069c
-----------------------------------------------------------
225: StackFiq DCD FiqStackSpace + (FIQ_STACK_LEGTH - 1)* 4
0x000000B4 4000069C MULMI R0,R12,R6
226: StackAbt DCD AbtStackSpace + (ABT_STACK_LEGTH - 1)* 4
0x000000B8 4000069C MULMI R0,R12,R6
227: StackUnd DCD UndtStackSpace + (UND_STACK_LEGTH - 1)* 4
0x000000BC 4000069C MULMI R0,R12,R6
257: AREA MyStacks, DATA, NOINIT, ALIGN=2
0x000000C0 40004000 ANDMI R4,R0,R0
--------------------------------------------------------------
在 后面2个字长的指令 后才是想要的值 0x40004000
为什么呢??? 我用ADS, KEIL仿真器 答 1: 这个流水线技术的原因!虽然你的正在执行的指令在地址0x00000090处,但是这时PC指是指的三级流水线上的预取指指令,所以应该真实的PC值时0x00000090+0x00000008
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
“我踩过的那些坑”主题活动——第002期 | |
【EEPW电子工程师创研计划】技术变现通道已开启~ | |
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |