Frage

Dies ist mein erster Versuch, die Montage zu verwenden, und ich versuche nur, den Intel-Architektur-Anweisung GRATIONICETICETAGCODE zu verwenden.(Referenz auf dieses Dokument auf Seite 399).

Das soll das Zeichen Bit einfach löschen.

Das kleine, das ich über die Montage kenne, beinhaltet Quellen und Ziele, aber ich sehe keinen Hinweis auf die Notation für diesen Anweisungen.

unten ist einer meiner Versuche, es zu verwenden (unter Verwendung von Visual Studio 2012, C ++):

generasacodicetagpre.


Dieser spezielle Versuch ergibt den Fehler C2400: Inline-Assembler-Syntaxfehler in 'Opcode';gefunden '('


Bitte beachten Sie, dass ich die Montageanweisung nutzen möchte und nicht an anderen / "besseren" Optionen interessiert ist, die verfügbar sind.

War es hilfreich?

Lösung

mehrere Zeiger: Zunächst - Sie verwenden die Inline-Montage der GCC-Art in MS-Stil, in der Sie verwenden können -

generasacodicetagpre.

zweite - Anweisungen sind nicht Funktionen, so dass die Klammern auch falsch sind.

Zuletzt, aber am wichtigsten - fabs dauert kein Argument, es arbeitet nur oben auf dem FP-Stack.Sie müssen Ihre Variable explizit dort zuerst laden.Versuchen Sie dies:

generasacodicetagpre.

Jedenfalls mit alten X87-Anweisungen ist wahrscheinlich keine gute Sache, es ist wahrscheinlich sehr ineffizient - Sie sollten in Betracht ziehen, auf eine SSE-Lösung zu wechseln, siehe - Wie absolut 2 Doppel- oder 4 Floats mit SSE-Anweisungssatz?(Bis SSE4)

Andere Tipps

Mit VC ++ schließen Sie die Montagesprache nicht in Klammern ein.Die korrekte Syntax wäre eher:

generasacodicetagpre.

oder:

generasacodicetagpre.

In Ihrem spezifischen Fall möchten Sie wahrscheinlich etwas wollen:

generasacodicetagpre.

Soweit Quelle und Ziel gehen, wird der Fließkomma auf einem X86 einen Stapel verwendet.Wenn Sie nichts anderes angeben, nehmen die meisten Anweisungen (außer Last / Speicher) Operanden von der Oberseite des Stapels ein und kündigen auch Ergebnisse auf der Oberseite des Stapels.Zum Beispiel wird mit keinem Operanden gegeben, generellacticetagcode wird der absolute Wert des Operanden an der Oberseite des Fließkommastapels dauern und das Ergebnis an derselben Stelle zurückzahlen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top