+ resetregistercount, resetusableregisters

This commit is contained in:
peter 1998-09-01 09:03:47 +00:00
parent ca8c6dde40
commit 6b807957b1
2 changed files with 77 additions and 12 deletions

View File

@ -65,6 +65,9 @@ unit tgen68k;
procedure pushusedregisters(var pushed : tpushed;b : word);
procedure popusedregisters(const pushed : tpushed);
procedure clearregistercount;
procedure resetusableregisters;
var
unused,usableregs : tregisterset;
c_usableregs : longint;
@ -298,16 +301,41 @@ unit tgen68k;
usableaddress:=getusableaddr;
end;
procedure clearregistercount;
var
regi : tregister;
begin
for regi:=R_D0 to R_A6 do
begin
reg_pushes[regi]:=0;
is_reg_var[regi]:=false;
end;
end;
procedure resetusableregisters;
begin
usableregs:=[R_D0,R_D1,R_D2,R_D3,R_D4,R_D5,R_D6,R_D7,R_A0,R_A1,R_A2,R_A3,R_A4,
R_FP0,R_FP1,R_FP2,R_FP3,R_FP4,R_FP5,R_FP6,R_FP7];
c_usableregs:=4;
usableaddress:=3;
usablefloatreg:=6;
end;
begin
{ contains both information on Address registers and data registers }
{ even if they are allocated separately. }
usableregs:=[R_D0,R_D1,R_D2,R_D3,R_D4,R_D5,R_D6,R_D7,R_A0,R_A1,R_A2,R_A3,R_A4,
R_FP0,R_FP1,R_FP2,R_FP3,R_FP4,R_FP5,R_FP6,R_FP7];
c_usableregs:=4;
resetusableregisters;
end.
{
$Log$
Revision 1.3 1998-08-31 12:26:35 peter
Revision 1.4 1998-09-01 09:03:48 peter
+ resetregistercount, resetusableregisters
Revision 1.3 1998/08/31 12:26:35 peter
* m68k and palmos updates from surebugfixes
Revision 1.2 1998/06/08 13:13:46 pierre

View File

@ -60,6 +60,9 @@ unit tgeni386;
procedure pushusedregisters(var pushed : tpushed;b : byte);
procedure popusedregisters(const pushed : tpushed);
procedure clearregistercount;
procedure resetusableregisters;
var
unused,usableregs : tregisterset;
c_usableregs : longint;
@ -76,7 +79,9 @@ unit tgeni386;
reg_pushes : array[R_EAX..R_EDI] of longint;
is_reg_var : array[R_EAX..R_EDI] of boolean;
{$endif SUPPORT_MMX}
implementation
implementation
procedure pushusedregisters(var pushed : tpushed;b : byte);
@ -304,16 +309,48 @@ unit tgeni386;
end;
begin
usableregs:=[R_EAX,R_EBX,R_ECX,R_EDX];
procedure clearregistercount;
var
regi : tregister;
begin
{$ifdef SUPPORT_MMX}
usableregs:=usableregs+[R_MM0..R_MM6];
for regi:=R_EAX to R_MM6 do
begin
reg_pushes[regi]:=0;
is_reg_var[regi]:=false;
end;
{$else SUPPORT_MMX}
for regi:=R_EAX to R_EDI do
begin
reg_pushes[regi]:=0;
is_reg_var[regi]:=false;
end;
{$endif SUPPORT_MMX}
c_usableregs:=4;
end;
procedure resetusableregisters;
begin
{$ifdef SUPPORT_MMX}
usableregs:=[R_EAX,R_EBX,R_ECX,R_EDX,R_MM0..R_MM6];
c_usableregs:=4;
usableregmmx:=8;
{$else}
usableregs:=[R_EAX,R_EBX,R_ECX,R_EDX];
c_usableregs:=4;
{$endif SUPPORT_MMX}
end;
begin
resetusableregisters;
end.
{
$Log$
Revision 1.9 1998-08-19 16:07:56 jonas
Revision 1.10 1998-09-01 09:03:47 peter
+ resetregistercount, resetusableregisters
Revision 1.9 1998/08/19 16:07:56 jonas
* changed optimizer switches + cleanup of DestroyRefs in daopt386.pas
Revision 1.8 1998/08/10 14:50:34 peter