Update
This commit is contained in:
@@ -22,59 +22,53 @@ var
|
||||
Fasm:TRTBFasmCompiler;
|
||||
Src:TRTBSource;
|
||||
Module:TRTBModule;
|
||||
Func1,Func2:TRTBFunc;
|
||||
Func1,Func2,Func3:TRTBFunc;
|
||||
Var1:TRTBVar;
|
||||
begin
|
||||
Fasm:=TRTBFasmCompiler.Create('..\..\..\lib\FasmOnDelphi\fasmw172\fasm');
|
||||
Src:=Fasm.GenNewSrc;
|
||||
with Src do
|
||||
begin
|
||||
Text:='use32'+sLineBreak+
|
||||
'main:'+sLineBreak+
|
||||
Text:='main:'+sLineBreak+
|
||||
'pop ecx'+sLineBreak+
|
||||
'pop eax'+sLineBreak+
|
||||
'jmp ecx'+sLineBreak+
|
||||
'Pmain dd 0'+sLineBreak+
|
||||
'varmain:'+sLineBreak+
|
||||
'mov eax,[Pmain]'+sLineBreak+
|
||||
'ret'+sLineBreak+
|
||||
'callbacktest:'+sLineBreak+
|
||||
'push 80'+sLineBreak+
|
||||
'call CallBack'+sLineBreak+
|
||||
'ret';
|
||||
RegisterFunction('','main');
|
||||
RegisterFunction('','varmain');
|
||||
RegisterFunction('','callbacktest');
|
||||
AddCallBack('','CallBack',function(arg:array of const):TRTBCallBackOut
|
||||
begin
|
||||
Result:=arg[0];
|
||||
end);
|
||||
Register('','Pmain',TypeInfo(integer));
|
||||
end;
|
||||
Module:=Src.Compilate;
|
||||
Func1:=Module.Funtion['main'];
|
||||
Func2:=Module.Funtion['varmain'];
|
||||
Func3:=Module.Funtion['callbacktest'];
|
||||
if 454<>Func1.Call(TypeInfo(integer),[454],CRTBCallTypeStdCall).AsInteger then
|
||||
raise Exception.Create('Error in FasmTest');
|
||||
Var1:=Module.&Var['Pmain'];
|
||||
Var1.Val:=424;
|
||||
if Var1.Val.AsInteger<>Func2.Call(TypeInfo(integer),[],CRTBCallTypeStdCall).AsInteger then
|
||||
raise Exception.Create('Error in FasmTest');
|
||||
if PByte(Func3.Call(TypeInfo(integer),[],CRTBCallTypeStdCall).AsInteger)^<>80 then
|
||||
raise Exception.Create('Error in FasmTest');
|
||||
FreeAndNil(Var1);
|
||||
FreeAndNil(Func3);
|
||||
FreeAndNil(Func2);
|
||||
FreeAndNil(Func1);
|
||||
FreeAndNil(module);
|
||||
FreeAndNil(Src);
|
||||
FreeAndNil(Fasm);
|
||||
{var
|
||||
Fasm:TRTBFasmCompiler;
|
||||
Src:TRTBSource;
|
||||
Func1:TRTBFunc;
|
||||
begin
|
||||
{Fasm:=TRTBFasmCompiler.Create('..\..\..\FasmOnDelphi\fasmw172\fasm');
|
||||
Src:=Fasm.GenNewSrc;
|
||||
Src.LoadFromFile('..\..\testlib.fasm');
|
||||
Fasm.LoadLib('W:\RuntimeBuilder\FasmOnDelphi\fasmw172\INCLUDE\win32a.inc');
|
||||
lib:=Src.CompilateAsLib;
|
||||
Func1:=lib.Funtion['MyEcho'];
|
||||
if 234665<>Func1.Call(TypeInfo(integer),[234665],CRTBCallTypeStdCall).AsInteger then
|
||||
begin
|
||||
raise Exception.Create('Error in test2');
|
||||
end;
|
||||
FreeAndNil(Func1);
|
||||
FreeAndNil(Src);
|
||||
FreeAndNil(Fasm);}
|
||||
end;
|
||||
|
||||
procedure TRuntimeBuilderTestObject.LuaTest();
|
||||
@@ -83,26 +77,26 @@ var
|
||||
Src:TRTBSource;
|
||||
Module:TRTBModule;
|
||||
Func1,Func2:TRTBFunc;
|
||||
Var1:TRTBVar;
|
||||
//Var1:TRTBVar;
|
||||
begin
|
||||
Lua:=TRTBLuaCompiler.Create();
|
||||
Src:=Lua.GenNewSrc;
|
||||
Src.Text:='function main(n)'+sLineBreak+' return 1'+sLineBreak+'end';
|
||||
Src.RegisterFunction('','main');
|
||||
Src.Text:='function main(n)'+sLineBreak+' return n'+sLineBreak+'end';
|
||||
//Src.RegisterFunction('','main');
|
||||
//Src.RegisterFunction('','varmain');
|
||||
//Src.Register('','Pmain',TypeInfo(integer));
|
||||
Module:=Src.Compilate;
|
||||
Func1:=Module.Funtion['main'];
|
||||
//Func1:=Module.Funtion['main'];
|
||||
//Func2:=Module.Funtion['varmain'];
|
||||
if 1<>Func1.Call(TypeInfo(integer),[454],CRTBCallTypeStdCall).AsInteger then
|
||||
raise Exception.Create('Error in LuaTest');
|
||||
//if 1<>Func1.Call(TypeInfo(integer),[454],CRTBCallTypeStdCall).AsInteger then
|
||||
// raise Exception.Create('Error in LuaTest');
|
||||
//Var1:=Module.&Var['Pmain'];
|
||||
//Var1.Val:=424;
|
||||
//if Var1.Val.AsInteger<>Func2.Call(TypeInfo(integer),[],CRTBCallTypeStdCall).AsInteger then
|
||||
// raise Exception.Create('Error in LuaTest');
|
||||
FreeAndNil(Var1);
|
||||
FreeAndNil(Func2);
|
||||
FreeAndNil(Func1);
|
||||
//FreeAndNil(Var1);
|
||||
//FreeAndNil(Func2);
|
||||
//FreeAndNil(Func1);
|
||||
FreeAndNil(module);
|
||||
FreeAndNil(Src);
|
||||
FreeAndNil(Lua);
|
||||
|
||||
Reference in New Issue
Block a user