Aufruf der Assembly in GCC?

8
%Vor%

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     
rbr200 22.03.2010, 03:08
quelle

2 Antworten

6

= 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.

    
osgx 22.03.2010 03:19
quelle
2

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%     
osgx 22.03.2010 03:14
quelle