__declspec(naked) für x64
-
MSDN schrieb:
For functions declared with the naked attribute, the compiler generates code without prolog and epilog code. You can use this feature to write your own prolog/epilog code sequences using inline assembler code. Naked functions are particularly useful in writing virtual device drivers. Note that the naked attribute is only valid on x86, and is not available on x64 or Itanium.
Gibts irgendeine Analogie dazu für x64?
-
Ja, *.asm

So weit mir bekannt ist (beziehe mich auf VC2005 und 2008) haben die 64 bit Compiler keinen inline assembler. Man sollte aber normale ASM files zu einem Projekt hinzufügen können. Bei den Sourcen für die CRT waren glaub ich ein paar Reste für x64 dabei, die der Compiler so "naked" aufrufen kann.
Mir ist aber die Lust an ASM unter x64 vergangen, weil gerade die Calling Convention gegenüber 32 bit recht umfangreich aussieht. Parameter sind in den Registern, der Stack muss streng aligned sein ... bisschen RISCy .... da müsste man sich schon genau an die Vorgaben halten, wenn man C++ und ASM mischen wollte .... vermute mal, dass inline ASM und seine Helfer deshalb rausgenommen wurden.
lg XOR
-
Es gibt kein x64/IA64 inline-assembler... und asm-Files sind möglich.
Es gibt auch nur eine Calling-Convention, deshalb ist es fast einfacher
Aber ich frage mich immer: Warum will man Assembler schreiben, wenn der C/C++ Compiler sehr guten optimierten Code erzeugt?
-
Jochen Kalmbach schrieb:
Warum will man Assembler schreiben, wenn der C/C++ Compiler sehr guten optimierten Code erzeugt?
z.B. SIMD code - das beherrschen die Compiler so gut wie gar nicht.
-
Nicht das ich mich mit jenen Befehlserweiterungen auskennen würde, aber hat MS nicht extra "intrinsics" für diese Befehle eingeführt. Ich fand es zwar etwas komischen, weil die meisten Intrinsics erst recht wieder CPU-abhängig waren - da hätte man ja gleich den ASM reinnehmen können.
@Jochen: Stimm ich dir zu, hab die letzten paar mal mit ASM eher schlechteren Code als der Compiler erzeugt ... also lass ich es, aber ... wenn man mit DOS und PASCAL aufgewachsen ist, kommt man gerne in Versuchung...
xor rax, rax

-
Danke für die Antworten.
Ich glaube ich gehe das Thema Hooking etwas falsch an, oder hab ein paar Links zuviel geklickt *hust*