首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >label:.word label在手臂组件中的含义

label:.word label在手臂组件中的含义
EN

Stack Overflow用户
提问于 2013-09-17 19:33:49
回答 2查看 25.3K关注 0票数 7

我正在查看uboot中的以下序列

代码语言:javascript
复制
.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中的有效指令吗?我不能理解这个,有谁能解释一下吗?

EN

回答 2

Stack Overflow用户

发布于 2013-09-17 19:39:22

label: .word value将4字节的value放在(由链接器分配)给label的地址。

因此,_irq: .word _irq有效地将_irq的地址放在该地址(例如,如果_irq标签的地址是0x12345678,您将在地址0x12345678处获得值0x12345678)。

票数 5
EN

Stack Overflow用户

发布于 2013-09-17 20:19:17

您可能想知道这是一种递归引用:为什么

代码语言:javascript
复制
.label: .word label? 

它们不是一样的吗?实际上,标签只是编译器的一个指令,但是.word后面的‘.label’是一个函数指针,在本例中是指向中断函数的。我认为这更像是一个编译器的把戏。你也可以这样做

代码语言:javascript
复制
ldr pc, =irq

为了得到相同的结果,这里的"ldr“也是一个指令,而不是arm指令。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18848776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档