15 Stimmen

Warum unterstützt MSVC keine Inline-Assembler für AMD64 und Itanium Ziele?

Gestern habe ich erfahren, dass Inline-Assembly (mit dem Schlüsselwort __asm) unter Microsoft Visual C++ bei der Kompilierung für AMD64- und Itanium-Ziele nicht unterstützt wird.

Ist das richtig? Und wenn ja, weiß jemand, warum sie keine Inline-Assemblierung für diese Ziele unterstützen würden? Es scheint ein ziemlich großes Feature zu sein, das man einfach weglassen könnte...

13voto

Martin v. Löwis Punkte 120025

Richtig, es wird immer noch nicht unterstützt in VS 2010 Beta 1 . Ich vermute, dass Inline-Assembler einfach zu schwierig zu implementieren ist: So wie Microsoft es implementiert hat, integriert es sich in den umgebenden C-Code, so dass Daten in den und aus dem C-Code fließen können, und geeigneter Glue-Code wird automatisch injiziert. Dafür muss der C-Compiler den Assembler-Code verstehen; das haben sie für AMD64 und Itanium einfach nicht implementiert.

6voto

Bastien Léonard Punkte 57728

Es scheint eine ziemlich große Funktion zu sein, die man einfach weglassen kann...

Es ist recht einfach, eine mit einem Assembler geschriebene Funktion aufzurufen, solange man die C-Konventionen beachtet. Dieses Lernprogramm erklärt wie.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X