|
@@ -35,6 +35,7 @@ unit cgcpu;
|
|
cpubase,cpuinfo,node,cg64f32,rgcpu;
|
|
cpubase,cpuinfo,node,cg64f32,rgcpu;
|
|
|
|
|
|
type
|
|
type
|
|
|
|
+ tregisterlist = array of tregister;
|
|
|
|
|
|
{ tcgz80 }
|
|
{ tcgz80 }
|
|
|
|
|
|
@@ -44,6 +45,9 @@ unit cgcpu;
|
|
procedure init_register_allocators;override;
|
|
procedure init_register_allocators;override;
|
|
procedure done_register_allocators;override;
|
|
procedure done_register_allocators;override;
|
|
|
|
|
|
|
|
+ procedure getcpuregisters(list:TAsmList;regs:tregisterlist);
|
|
|
|
+ procedure ungetcpuregisters(list:TAsmList;regs:tregisterlist);
|
|
|
|
+
|
|
function getaddressregister(list:TAsmList):TRegister;override;
|
|
function getaddressregister(list:TAsmList):TRegister;override;
|
|
|
|
|
|
function GetOffsetReg(const r: TRegister;ofs : shortint): TRegister;override;
|
|
function GetOffsetReg(const r: TRegister;ofs : shortint): TRegister;override;
|
|
@@ -161,6 +165,23 @@ unit cgcpu;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
+ procedure tcgz80.getcpuregisters(list: TAsmList; regs: tregisterlist);
|
|
|
|
+ var
|
|
|
|
+ r: tregister;
|
|
|
|
+ begin
|
|
|
|
+ for r in regs do
|
|
|
|
+ getcpuregister(list,r);
|
|
|
|
+ end;
|
|
|
|
+
|
|
|
|
+ procedure tcgz80.ungetcpuregisters(list: TAsmList; regs: tregisterlist);
|
|
|
|
+ var
|
|
|
|
+ r: tregister;
|
|
|
|
+ begin
|
|
|
|
+ for r in regs do
|
|
|
|
+ ungetcpuregister(list,r);
|
|
|
|
+ end;
|
|
|
|
+
|
|
|
|
+
|
|
function tcgz80.getaddressregister(list: TAsmList): TRegister;
|
|
function tcgz80.getaddressregister(list: TAsmList): TRegister;
|
|
begin
|
|
begin
|
|
Result:=getintregister(list,OS_ADDR);
|
|
Result:=getintregister(list,OS_ADDR);
|