X86-Assembly - Umgang mit der IDIV-Anweisung

Ich schreibe gerade einen einfachen C-Compiler, der eine .c-Datei als Eingabe verwendet und Assembly-Code generiert (X86, AT & T-Syntax). Alles ist gut, aber wenn ich versuche, einen IDIVQ-Befehl auszuführen, erhalte ich eine Gleitkomma-Ausnahme. Hier ist meine Eingabe:

<code>int mymain(int x){
  int d;
  int e;
  d = 3;
  e = 6 / d;
  return e;
}
</code>

Und hier ist mein generierter Code:

<code>mymain:
.LFB1:
    .cfi_startproc
    pushq   %rbp
    .cfi_def_cfa_offset 16
    movq    %rsp, %rbp
    .cfi_offset 6, -16
    .cfi_def_cfa_register 6
    movq    %rdi, -40(%rbp)
    movq    $3, -8(%rbp)
    movq    $6, %rax
    movq    -8(%rbp), %rdx
    movq    %rdx, %rbx
    idivq   %rbx
    movq    %rax, -16(%rbp)
    movq    -16(%rbp), %rax
    leave
    .cfi_def_cfa 7, 8
    ret
    .cfi_endproc
.LFE1:
    .size mymain, .-mymain
</code>

Gemäßhttp://www.cs.virginia.edu/~evans/cs216/guides/x86.html, idivq% rbx sollte 6 / d (der Quotient) in ergeben% rax. Aber ich bekomme eine Gleitkomma-Ausnahme und kann das Problem anscheinend nicht finden.

Jede Hilfe wird sehr geschätzt!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage