assembly - 标签 : . 字标签在 ARM 程序集中是什么意思

标签 assembly arm

我在 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 中的有效指令吗?
我无法理解这一点,谁能解释一下?

最佳答案

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

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

关于assembly - 标签 : . 字标签在 ARM 程序集中是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18848776/

相关文章:

linux - 汇编语言和打印结果。斐波那契数列

android - 交叉编译到arm时找不到lpthread

android - 在 Android (ARM) 上比较和交换

linux - 按名称杀死正在运行的进程

arm - 您可以在ARM体系结构中从 ARM 模式切换到拇指模式的所有方式列出它们并进行详细说明?

assembly - x86 64 汇编

c - 关于x86-64汇编语言中的局部变量寄存器的问题

c++ - 简单 for 循环的意外无意义优化尝试(在 Visual C++ 2017 中)

c - 构建 USB 外设

arm - busybox 交叉编译到 arm 时出错