Mem problems fix
This commit is contained in:
@@ -22,19 +22,29 @@ var
|
||||
Fasm:TRTBFasmCompiler;
|
||||
Src:TRTBSource;
|
||||
Module:TRTBModule;
|
||||
Func1:TRTBFunc;
|
||||
Func1,Func2:TRTBFunc;
|
||||
Var1:TRTBVar;
|
||||
begin
|
||||
Fasm:=TRTBFasmCompiler.Create('..\..\..\lib\FasmOnDelphi\fasmw172\fasm');
|
||||
Src:=Fasm.GenNewSrc;
|
||||
Src.Text:='use32'+sLineBreak+'main:'+sLineBreak+'pop ecx'+sLineBreak+'pop eax'+sLineBreak+'jmp ecx'+sLineBreak+'Pmain dd 0';
|
||||
Src.Text:='use32'+sLineBreak+'main:'+sLineBreak+'pop ecx'+sLineBreak+'pop eax'+sLineBreak+'jmp ecx'+sLineBreak+'Pmain dd 0'+
|
||||
sLineBreak+'varmain:'+sLineBreak+'mov eax,[Pmain]'+sLineBreak+'ret';
|
||||
Src.RegisterFunction('','main');
|
||||
Src.Register('','Pmain',TypeInfo(pointer));
|
||||
Src.RegisterFunction('','varmain');
|
||||
Src.Register('','Pmain',TypeInfo(integer));
|
||||
Module:=Src.Compilate;
|
||||
Func1:=Module.Funtion['main'];
|
||||
Func2:=Module.Funtion['varmain'];
|
||||
if 454<>Func1.Call(TypeInfo(integer),[454],CRTBCallTypeStdCall).AsInteger then
|
||||
begin
|
||||
raise Exception.Create('Error in test1');
|
||||
end;
|
||||
Var1:=Module.&Var['Pmain'];
|
||||
Var1.Val:=454;
|
||||
if 454<>Func2.Call(TypeInfo(integer),[],CRTBCallTypeStdCall).AsInteger then
|
||||
begin
|
||||
raise Exception.Create('Error in test1');
|
||||
end;
|
||||
FreeAndNil(Func1);
|
||||
FreeAndNil(Src);
|
||||
FreeAndNil(Fasm);
|
||||
|
||||
Reference in New Issue
Block a user