64 bit Assembler convert zu c++
-
@Bushmaster sagte in 64 bit Assembler convert zu c++:
es ist doch möglich, dass jemand die fehlende x64-assembler-unterstützung als mangel empfindet und ein plugin baut.
IMO sollte ein Inline-Assembler voll in den Compiler integriert sein, damit die Assembler-Passagen auch an Code-Transformationen für Optimierungen (Inlining, Umsortieren der Instruktionen und sowas) oder solchen Sachen wie Register-Allokationen teilnehmen können (GCC macht das z.B.).
Das zu implementieren ist schon aufwändig - andernfalls wäre aber der einzige Vorteil, dass man den ASM-Code dann eben in der .cpp stehen hat (wenn man das überhaupt als Vorteil sieht). Das fände ich nicht der Mühe wert.
-
@Finnegan sagte in 64 bit Assembler convert zu c++:
Das zu implementieren ist schon aufwändig
für jemanden, der einen c++ compiler programmiert, wohl eher nicht.
aber ohne ihn belästigen müssen, können andere leute compiler für andere sprachen schreiben. dem linker ist es letztlich egal, welcher compiler eine .obj-datei erzeugt hat.
-
@Bushmaster sagte in 64 bit Assembler convert zu c++:
vielleicht nicht als inline-assembler, aber so old-school mäßig .asm-dateien zu .obj compilieren.
<°)))><(
Als ob das nicht (schon immer?) ohne irgendwelche "Extensions" mit Visual Studio gehen würde.
MASM for x64 (ml64.exe) - Add an assembler-language file to a Visual Studio C++ project.Was anderes: Du kannst natürlich die Constraints immer weiter abändern wie es Dir passt, rechne bloß nicht damit daß Deine Diskussionspartner dann all zu lange Laune haben mit Dir zu reden. Es ging um inline-Assembly und da hast Du mit dem Microsoft-Compiler einfach Pech gehabt. Geld nehmen, Intel Compiler†) kaufen und glücklich sein.
†) Wegen der Integration in VS.
-
@Swordfish sagte in 64 bit Assembler convert zu c++:
Es ging um inline-Assembly
nee, es geht um eine funktion namens get_idt_base, die's nicht unter x64 tut.
inline-asm ist nicht die einzige möglichkeit das zu fixen.
-
@Bushmaster sagte in 64 bit Assembler convert zu c++:
nee, es geht um eine funktion namens get_idt_base, die's nicht unter x64 tut.
Das wurde im fünften Post behandelt und vom OP war seitdem nichts zu hören. Danach geht es offensichtlich darum daß der MS-Compiler kein inline assembly kann.
<°)))><(
-
-
-
@Bushmaster
Es ging um Inline-Assembler. Und der muss voll in den Compiler integriertsein, weil sonst wäre es ja kein Inline-Assembler. Und das geht mit VS zwar wenn man andere Compiler integriert, aber es geht mit MSVC aka "cl.exe" nicht.Das zu implementieren ist schon aufwändig
für jemanden, der einen c++ compiler programmiert, wohl eher nicht.
Da täuscht du dich aber gewaltig.
aber ohne ihn belästigen müssen, können andere leute compiler für andere sprachen schreiben. dem linker ist es letztlich egal, welcher compiler eine .obj-datei erzeugt hat.
Klar. Gibt es ja auch alles. Ein Compilerwechsel ist aber etwas was man normalerweise nicht machen möchte, wenn man bloss ein paar Zeilen Assemblercode integrieren möchte.
-
@hustbaer
wenn es unbedingt inline sein soll, dann könnte er vielleicht den _emit-befehl verwenden.
https://docs.microsoft.com/en-us/cpp/assembler/inline/emit-pseudoinstruction?view=vs-2019
so als letzter ausweg vor dem compilerwechsel.
-
@Bushmaster
_emit
ist ein Inline-Assembler Feature. Wird er sich schwer tun das zu verwenden wenn Inline-Assembler einfach nicht implementiert ist. Und das Problem wurde ja auch schon gelöst: einfach__sidt
ausintrin.h
verwenden.