Während in einem GNU-Projekt durch einige Quellcode lesen, ich auf dieses Stück Inline-Assembler kam:Hilfe Verständnis DIV-Anweisung in x86-Inline-Assembler
__asm__ (
"divq %4"
: "=a" (q), "=d" (r)
: "0" (n0), "1" (n1), "rm" (d)
);
Hier werden die Variablen q
, r
, n0
, n1
und d
sind 64-Bit-Ganzzahlen. Ich kenne genug Assembly, um den Kern dessen zu verstehen, was das tut, aber es gibt einige Details, über die ich mir nicht sicher bin.
Was ich verstehen:
Wir den Inhalt der RAX-Register durch d
teilen, indem die Quotienten in q
, und den Rest in r
platzieren.
Was verstehe ich nicht
- Warum gibt es drei Eingänge hier? Wir müssen nur einen Dividend und einen Divisor eingeben, was könnte also für 3 Eingänge geben?
- Ich kann nicht sagen, welche der Eingänge die Dividende ist. Allgemeiner sehe ich nichts wirklich , das in das RAX Register, geladen wird, also wie weiß es, was man durch was teilt?
+1 gut formatierte Frage. Ich mag die Abschnitte "was ich verstehe" und "was ich nicht verstehe". –