7

ubootで次のシーケンスを見ています

.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
#ifdef CONFIG_SPL_BUILD
_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
_pad:           .word 0x12345678 /* now 16*4=64 */
#else
_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
_pad:           .word 0x12345678 /* now 16*4=64 */
#endif  /* CONFIG_SPL_BUILD */

IRQ または FIQ コアがある場合、_irq に分岐しますが、あるケースでは _irq を見つけます: .word _irq, これはどういう意味ですか?

_irq のアドレスは ARM で有効な命令ですか? 私はこれを理解することができません、誰か説明できますか?

4

2 に答える 2

5

label: .word valuevalueは、(リンカによって) に割り当てられたアドレスに4 バイトを配置しlabelます。

したがって、 _irq: .word _irq_irq のアドレスそのアドレスに効果的に配置します (たとえば、_irqラベルのアドレスが 0x12345678 の場合、アドレス 0x12345678 で値 0x12345678 を取得します)。

于 2013-09-17T11:39:22.047 に答える