Continue recebendo e8 00 00 00 00 como o código da máquina para chamar uma função na montagem

Eu sei ao usarobjdump -dr no meu arquivocall aparece no código da máquina comoe8 00 00 00 00 porque ainda não foi vinculado. Mas preciso descobrir o que o00 00 00 00 irá se transformar depois que o vinculador tiver feito seu trabalho. Eu sei que deve calcular o deslocamento, mas estou um pouco confuso sobre isso.

Como um exemplo com o código abaixo, após a conclusão da parte do vinculador, como oe8 00 00 00 00 estar? E como chego a essa resposta?

Estou testando com este código de exemplo: (estou tentando chamar moo)

Disassembly of section .text:

0000000000000000 <foo>:
   0:   55                      push   %rbp
   1:   48 89 e5                mov    %rsp,%rbp
   4:   89 7d fc                mov    %edi,-0x4(%rbp)
   7:   8b 45 fc                mov    -0x4(%rbp),%eax
   a:   83 e8 0a                sub    $0xa,%eax
   d:   5d                      pop    %rbp
   e:   c3                      retq   

000000000000000f <moo>:
   f:   55                      push   %rbp
  10:   48 89 e5                mov    %rsp,%rbp
  13:   89 7d fc                mov    %edi,-0x4(%rbp)
  16:   b8 01 00 00 00          mov    $0x1,%eax
  1b:   5d                      pop    %rbp
  1c:   c3                      retq   

000000000000001d <main>:
  1d:   55                      push   %rbp
  1e:   48 89 e5                mov    %rsp,%rbp
  21:   48 83 ec 10             sub    $0x10,%rsp
  25:   c7 45 fc 8e 0c 00 00    movl   $0xc8e,-0x4(%rbp)
  2c:   8b 45 fc                mov    -0x4(%rbp),%eax
  2f:   89 c7                   mov    %eax,%edi
  31:   e8 00 00 00 00          callq  36 <main+0x19>
            32: R_X86_64_PC32   moo-0x4
  36:   89 45 fc                mov    %eax,-0x4(%rbp)
  39:   b8 00 00 00 00          mov    $0x0,%eax
  3e:   c9                      leaveq 
  3f:   c3                      retq

questionAnswers(3)

yourAnswerToTheQuestion