__asm - für welchen CPU compiliert der Inline Assembler?



  • Passt sich der Inline-Assembler automatisch an den CPU an, mit dem man einen C-Code compiliert oder kann man da irgendwo in den Direktiven einstellen für welchen CPU man kompilieren will? 😕 😕 😕
    Die Mnemonics sind doch sicher in einer header-Datei aufgelistet, oder?



  • Compilerabhängig. Der BCC beispielsweise erstellt ohnehin nur Kompilate für x86, beim MSVC dürfte die Syntax von der target-Einstellung in den Projektoptionen abhängen, und der GCC reicht, wenn ich recht weiß, Inline-Assembler-Code einfach nur an das Backend durch.



  • Abgesehen vom Assembler Dialekt sind ebenfalls Syntax (zB AT&T oder Intel) oder die Einbindung des Assembler Codes selbst abhängig vom Compiler. GCC hält sich zB strikt an die ISO Vorgaben

    asm ("...");
    

    während der MSC dies wie folgt handhabt

    asm {...}
    

    Man kann daher leider oft nicht vermeiden, Inline Assembler Code pro Compiler zu schreiben. Es gibt aber durchaus Einstellungen, die es ein bisschen vereinfachen. GCC bietet zB eine Option, um zwischen AT&T und Intel Syntax umzuschalten.


Anmelden zum Antworten