GAS:JMP 指令不正确?

GAS: JMP instruction incorrect?

我有这个汇编代码:

jit_out.s

movq [=10=]x1, %rax
jmp f1
movq [=10=]xf000000101db3fb1, %rsi
push %rsi
movq [=10=]x101db3ed8, %rax
addq , %rsp
ret
f1:
movq [=10=]x101db3fb0, %rax
movq [=10=]x1, %rax
ret

运行 as -v < /dev/null 给出:

Apple Inc version cctools-862, GNU assembler version 1.38

运行 as jit_out.s -o jit_out.oobjdump -D jit_out.o returns:

jit_out.o:     file format mach-o-x86-64


Disassembly of section .text:

    0000000000000000 <f1-0x26>:
   0:   48 c7 c0 01 00 00 00    mov    [=12=]x1,%rax
   7:   e9 00 00 00 00          jmpq   c <f1-0x1a>
   c:   48 be b1 3f db 01 01    movabs [=12=]xf000000101db3fb1,%rsi
  13:   00 00 f0 
  16:   56                      push   %rsi
  17:   48 b8 d8 3e db 01 01    movabs [=12=]x101db3ed8,%rax
  1e:   00 00 00 
  21:   48 83 c4 08             add    [=12=]x8,%rsp
  25:   c3                      retq   

0000000000000026 <f1>:
  26:   48 b8 b0 3f db 01 01    movabs [=12=]x101db3fb0,%rax
  2d:   00 00 00 
  30:   48 c7 c0 01 00 00 00    mov    [=12=]x1,%rax
  37:   c3                      retq   

让我困惑的是这一行:

  7:    e9 00 00 00 00          jmpq   c <f1-0x1a>

为什么它跳转到位置 c(下一条指令?)而不是 26,我没看错吗?

原来在 OSX 上使用 as -L 修复了搬迁!