Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.050 Beiträge
Delphi 12 Athens
|
Re: just-in-time - Codeerzeugung : Funktionen aus Formeln?
18. Okt 2009, 15:16
mann könnte auch noch viele der Stringoperationen weglassen und durch knuffige "Integer" ersetzen
und wenn man dann noch die Speicherverwaltung den Prozeduren (wobei sich da eine Klasse gut eigenen würde) überläßt, dann könnte es am Ende eventuell etwa so aussehn
Delphi-Quellcode:
type TRegister = (rNone, rEAX, rEBX, rECX, rEDX, rSDI, ...);
TComand = (cPUSH, cPOP, cMOV, ...);
procedure write_asm(code: Pointer; reg: TRegister; mem: Pointer = nil); overload;
procedure write_asm(code: Pointer; mem: Pointer; reg: TRegister = rNone); overload;
codeptr := CreateAsm;
AddAsm(codeptr, cPUSH, rEAX);
AddAsm(codeptr, cMOV, rEAX, $AABBCCDD);
AddAsm(codeptr, cPOP, rEAX);
AsmExecute(codeptr, u, v);
AsmFree(codeptr);
bzw. so
Delphi-Quellcode:
code := TAsm.Create;
code.Add(cPUSH, rEAX);
code.Add(cMOV, rEAX, $AABBCCDD);
code.Add(cPOP, rEAX);
code.Execute(u, v);
Asm.Free;
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
|
|
Zitat
|