Forum: Sonstige Fragen zu Delphi
by Zacherl,
14. Sep 2016
Hast du natürlich recht. Der Codeschnipsel von mir funktioniert nur mit Delphi-eigenen Methoden (Register-Call + versteckter This-Pointer als erstes Argument).
Forum: Sonstige Fragen zu Delphi
by Zacherl,
13. Sep 2016
Also thiscall (ECX = Pointer zur Objektinstanz) ist auch ohne Assembly möglich:
type
TFunctionPointer = function(A, B, C: Integer): Integer of object;
// Aufruf
var
Method: TMethod;
begin
Method.Code := Pointer($00401234); // Adresse der Funktion
Method.Data := Pointer($00749624); // Adresse der Objektinstanz
Forum: Sonstige Fragen zu Delphi
by Zacherl,
13. Sep 2016
Falls du lieber auf inline-Assembly verzichten willst, geht sogar Folgendes:
type
TFunctionPointer = function(A, B, C: Integer): Integer; stdcall;
// Aufruf
TFunctionPointer($00401234)(1, 2, 3);
Je nachdem was für Funktionen du aufrufst, musst du natürlich schauen, ob die überhaupt einer Standard Calling-Convention (stdcall, cdecl, etc.) folgen. Falls nicht, kommst du um den...
Forum: Sonstige Fragen zu Delphi
by Zacherl,
12. Sep 2016
In Delphi ist "$" das Prefix für hexadezimale Darstellung und nicht "h" als Suffix.
Es gibt kein CALL ABS im X86 Assembler. Calls und Jumps sind immer relativ. Höchstens CALL ist noch möglich.