2009-08-18 7 views

Antwort

9

Richtig, es ist immer noch nicht in VS 2010 Beta 1 unterstützt. Meine Vermutung ist, dass die Inline-Assemblierung 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 C-Code hinein und aus ihm heraus fließen können. Dazu muss der C-Compiler den Assembler-Code verstehen; Sie haben das nur für AMD64 und Itanium nicht implementiert.

+1

Die C-Compiler erzeugt ASM als Zwischen, nichts ist es „schwierig“ macht es inline ASM auf AMD64 zu ermöglichen. Die Plattformspezifikationen sind der einzige Grund, warum Inline-ASM für x86_64-Ziele in mehreren Compilern, die es für x86 unterstützten, nicht existiert. –

+0

@MarkKCowan: Haben Sie * MSVC's Inline-ASM * gesehen? Es beinhaltet eine Menge an Do-Was-Ich-Mitteln; Sie können frei C/C++ Variablen in dem Assembler-Code Text mischen, so dass der Compiler und (auf einem bestimmten Ebene) zu analysieren, hat die gesamten Code analysieren, nicht wie GCC Weg, wo der Assembler-Code selbst in einem Stil erinnert an printf angegeben Formatzeichenfolgen und explizite Beschreibungen der Eingaben, Ausgaben und gestörten Register machen es überflüssig, dass der Compiler versucht, die Assembly zu analysieren. Ehrlich gesagt, bevorzuge ich den Ansatz von GCC, da es weniger das Erraten des Compilers erfordert. – SamB

+1

@SamB yep, wie Inline-Assembly in Delphi. Ich wünschte nur, GCC nicht verwenden AT & T-Syntax :( –

3

Es scheint wie ein ziemlich großes Feature gerade fallenlassen ...

Es ist ziemlich einfach, eine Funktion mit einem Assembler geschrieben zu nennen, solange Sie C-Konventionen folgen. This tutorial erklärt wie.

+0

einverstanden sind, die einzige Eine echte Einschränkung ist, dass Sie C und ASM nicht in derselben Routine mischen können.Vom Pascal-Hintergrund her kommend, wo Inline-ASM-Mischen im wissenschaftlichen Code üblich ist, kann ich der Entscheidung, die Trennung von Sprachen in verschiedene Funktionen durchzusetzen, uneingeschränkt zustimmen. –