`b .` 在这个汇编代码中是什么意思?

Und*_*der 6 assembly arm gnu-assembler instruction-set

所以我正在研究Redox OS(一个用 Rust 制作的操作系统)的源代码,看看我是否能学到一些东西。

我读的汇编文件的start.sbootloader的文件夹。在interrupt_vector_table标签中,我们有:

interrupt_vector_table:
    b . @ Reset
    b . 
    b . @ SWI instruction
    b . 
    b .
    b .
    b .
    b .
Run Code Online (Sandbox Code Playgroud)

究竟是b .什么?

我不是一个完整的组装初学者,我以前从未遇到过这种情况。

Mar*_*nau 12

b为ARM CPU指令几乎是一样的jmp针对x86 CPU的指令:跳转指令

使用 GNU 工具链.意味着: 指令本身的地址。

所以b .等于:

temporaryLabel:
    b temporaryLabel
Run Code Online (Sandbox Code Playgroud)

或(对于 x86 CPU):

temporaryLabel:
    jmp temporaryLabel
Run Code Online (Sandbox Code Playgroud)

  • @UndercoverCoder:在我看来,所有中断向量都是无限循环,直到替换为跳转到不同中断的实际处理程序。 (2认同)