2017-02-01 2 views
0

Ich weiß, dass es für einen __asm Block möglich ist, auf Variablen zuzugreifen, die außerhalb dieser Blöcke deklariert wurden, aber ich möchte einen Weg finden, auf eine Variable zuzugreifen, die in einem __asm Block von außerhalb eines solchen Blocks deklariert ist. All mein Wissen über C und C++ zeigt an, dass dies unmöglich sein sollte, weil C und C++ alles innerhalb von {} Blöcken ausmachen. Gibt es eine Möglichkeit dies zu tun oder muss ich solche Variablen außerhalb des __asm Blocks deklarieren?Kann ich auf __asm-Variablen von außerhalb eines __asm-Blocks zugreifen?

PS: Ich konnte keine relevante Antwort auf diese Frage von irgendwelchen meiner Suchen finden.

+0

Ich denke, wir übernehmen Sie MS Visual C++? –

+0

Ja, aber ist die Inline-Assembly nicht auf anderen Compilern verfügbar? –

+1

Sie ist in anderen Compilern verfügbar (aber nicht erforderlich), wird jedoch nicht immer in einer Weise angeboten, die mit MSVC++ kompatibel ist. Zum Beispiel gibt es in GCC Assembly Language Templates, die ganz anders als MSVC++ funktionieren. –

Antwort

1

Die Antwort scheint kein

Microsoft Specific

zu sein, obwohl ein __asm ​​Block C oder C++ Datentypen und Objekte verweisen kann, kann es nicht Datenobjekte mit MASM-Richtlinien oder Operatoren definieren. Insbesondere können Sie die Definitionsdirektiven DB, DW, DD, DQ, DT und DF oder die Operatoren DUP oder THIS nicht verwenden. MASM-Strukturen und Datensätze sind ebenfalls nicht verfügbar. Der Inline-Assembler akzeptiert die Anweisungen STRUC, RECORD, WIDTH oder MASK nicht.

END Microsoft Specific

Von hier https://msdn.microsoft.com/en-us/library/h70hd396.aspx

+0

Das war, wovor ich Angst hatte. Aber danke. –

Verwandte Themen