> 一体どこで足すのだ?

命令デコード部分で足しゃいいじゃん。そうすりゃ実行部は

static void call_rel32(Emulator* emu, int32_t diff)
{
  push32(emu, emu->eip);
  emu->eip += diff;
}

こんな感じでスッキリするぞ。