首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

ldr指令的困惑(菜鸟)

2012-04-15 
ldr指令的困惑(初学者)汇编指令如下(前面的数字是我后加的,用于标记语句):1b reset2ldr pc, isr_undef_add

ldr指令的困惑(初学者)
汇编指令如下(前面的数字是我后加的,用于标记语句):
1 b reset
2 ldr pc, isr_undef_addr
3 ldr pc, isr_software_addr
4 ldr pc, isr_prefetch_addr
5 ldr pc, isr_data_addr
6 nop
7 ldr pc, isr_irq_addr
8 ldr pc, isr_fiq_addr

通过仿真器查看,上述语句在内存中的形式为:

语句 SRAM地址 ARM指令码 对应的ARM语句
-------------------------------------------------------
 1 0x40200018: EA000006 b reset
 2 0x4020001C: E59FF058 ldr pc, isr_undef_addr
 3 0x40200020: E59FF058 ldr pc, isr_software_addr
 4 0x40200024: E59FF058 ldr pc, isr_prefetch_addr
 5 0x40200028: E59FF058 ldr pc, isr_data_addr
 6 0x4020002C: E1A00000 mov r0, r0
 7 0x40200030: E59FF054 ldr pc, isr_irq_addr
 8 0x40200034: E59FF054 ldr pc, isr_fiq_addr

请问,为什么第2、3、4、5条语句的ARM指令码是一样的?第7、8条语句的ARM指令码是一样的?明明它们的ARM语句是不一样的啊!

[解决办法]
找下arm instruction set翻翻就是了,ldr的d11~d0表示offset,既然offset都一样,这些标号表示在sram中的一片连续地址,从低到高依次为:
isr_undef_addr
isr_software_addr
isr_prefetch_addr
isr_data_addr
isr_irq_addr
isr_fiq_addr
[解决办法]
你这是要问重定位?根据PC来算的
这些地址
isr_undef_addr
isr_software_addr
isr_prefetch_addr
isr_data_addr
isr_irq_addr
isr_fiq_addr
也就是跳转表而已
[解决办法]
你是要问PIC怎么做position independent code

热点排行