Kann mir jemand sagen, was genau dieser Code macht? Ich meine, ich habe eine Idee oder die Teile dieses Befehls. "1" newval ist die Eingabe, "= a" ist, den vorherigen Wert auszuspülen und zu aktualisieren. "m" ist für die Speicheroperation, aber ich bin verwirrt über die Funktionalität dieser Funktion. Was macht das "+ m" -Zeichen? Funktioniert diese Funktion etwa wie m = a; m = Neuwert; gib ein
zurück =
und +
sind Constraint-Modifikatoren.
'=' Bedeutet, dass dieser Operand ist Schreib-nur für diese Anweisung: die vorheriger Wert wird verworfen und ersetzt durch Ausgabedaten.
'+' Bedeutet, dass dieser Operand beides ist gelesen und geschrieben von der Anweisung.
Grundlegende Einschränkungen sind hier
m
Ein Speicheroperand ist erlaubt, mit jede Art von Adresse, die die Maschine unterstützt im Allgemeinen...
1
.. Ein Operand, der dem entspricht angegebene Operandennummer ist erlaubt. Wenn eine Ziffer zusammen mit verwendet wird Briefe in der gleichen Alternative, die Ziffer sollte zuletzt kommen.
'a' ist i386-spezifisch
a Das a (eax) -Register.
es gibt constraints
. Sie sind keine Variablen, sondern Modi, wie das "w", "r", "r +" von fopen()
einige von ihnen sind hier beschrieben
Teil 6. Mehr über Einschränkungen.
Und das letzte "cc" ist Clobber.
Wenn unser Befehl das Condition-Code-Register ändern kann, müssen wir
"cc"
zur Clobber-Liste hinzufügen.
Das vollständige Format von asm ist
%Vor%Tags und Links c gcc x86 inline-assembly constraints