完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
最近看uboot源码中S3C2440的start.S,源码的开始部分就是如下的代码:
.globl _start _start: b reset ldr pc, _undefined_instruction ldr pc, _software_interrupt ldr pc, _prefetch_abort ldr pc, _data_abort ldr pc, _not_used ldr pc, _irq ldr pc, _fiq _undefined_instruction: .word undefined_instruction _software_interrupt: .word software_interrupt _prefetch_abort: .word prefetch_abort _data_abort: .word data_abort _not_used: .word not_used _irq: .word irq _fiq: .word fiq 网上查找了很多,都说这个是中断向量表,但是可以得出的是比如irq中断发生的时候,ldr pc, _irq会被执行,所以pc的值将会被赋为_irq标号的地址,这一步是很清楚的,但是为什么当pc被赋值为这个之后,pc最终又会被赋值为irq标号的值呢?因为第一次跳转时ldr指令完成的,第二次pc指向_irq标号处并没有一条指令给它赋值为irq标号的值啊?这是一个想不明白的问题,还有一个想不明白的问题,为什么这里不直接使用ldr pc, irq这样的形式一步到位呢,为什么非要跳转两次才跳转到真正的位置呢? 路过的各位大虾,请帮本菜鸟解解惑吧,感激不尽。。。 |
|
相关推荐
2个回答
|
|
说了一大串 没看懂你的问题。。。
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
197个成员聚集在这个小组
加入小组为什么点亮LED的例子放在NORFlash上跑会出现奇怪的现象?
2177 浏览 6 评论
1982 浏览 5 评论
韦东山老师推出的《玩转ARM裸机实战》课程将帮你以上问题一扫而光!
4540 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 02:01 , Processed in 0.729909 second(s), Total 81, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号