mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-15 00:29:24 +02:00
* changed get_scratch_reg so it actually uses the\n scratch_reg_array_pointer
This commit is contained in:
parent
bb974dc8aa
commit
fc6b6505fd
@ -110,7 +110,7 @@ unit cgobj;
|
|||||||
if necessary the compiler will call a method
|
if necessary the compiler will call a method
|
||||||
to zero or sign extend the register
|
to zero or sign extend the register
|
||||||
* The a_load_XX_XX with OP_64 needn't to be
|
* The a_load_XX_XX with OP_64 needn't to be
|
||||||
implemented for 32 bit
|
implemented for 32 bit
|
||||||
processors, the code generator takes care of that
|
processors, the code generator takes care of that
|
||||||
* the addr size is for work with the natural pointer
|
* the addr size is for work with the natural pointer
|
||||||
size
|
size
|
||||||
@ -130,11 +130,11 @@ unit cgobj;
|
|||||||
|
|
||||||
{ comparison operations }
|
{ comparison operations }
|
||||||
procedure a_cmp_reg_const_label(list : paasmoutput;size : tcgsize;cmp_op : topcmp;a : aword;reg : tregister;
|
procedure a_cmp_reg_const_label(list : paasmoutput;size : tcgsize;cmp_op : topcmp;a : aword;reg : tregister;
|
||||||
l : pasmlabel);virtual;
|
l : pasmlabel);virtual;
|
||||||
procedure a_cmp_reg_reg_label(list : paasmoutput;size : tcgsize;cmp_op : topcmp;reg1,reg2 : tregister;l : pasmlabel);
|
procedure a_cmp_reg_reg_label(list : paasmoutput;size : tcgsize;cmp_op : topcmp;reg1,reg2 : tregister;l : pasmlabel);
|
||||||
procedure a_cmp_reg_ref_label(list : paasmoutput;size : tcgsize;cmp_op : topcmp;reg : tregister;l : pasmlabel);
|
procedure a_cmp_reg_ref_label(list : paasmoutput;size : tcgsize;cmp_op : topcmp;reg : tregister;l : pasmlabel);
|
||||||
procedure a_cmp_ref_const_label(list : paasmoutput;size : tcgsize;cmp_op : topcmp;a : aword;reg : tregister;
|
procedure a_cmp_ref_const_label(list : paasmoutput;size : tcgsize;cmp_op : topcmp;a : aword;reg : tregister;
|
||||||
l : pasmlabel);
|
l : pasmlabel);
|
||||||
|
|
||||||
procedure a_loadaddress_ref_reg(list : paasmoutput;const ref : treference;r : tregister);virtual;
|
procedure a_loadaddress_ref_reg(list : paasmoutput;const ref : treference;r : tregister);virtual;
|
||||||
procedure g_stackframe_entry(list : paasmoutput;localsize : longint);virtual;
|
procedure g_stackframe_entry(list : paasmoutput;localsize : longint);virtual;
|
||||||
@ -167,7 +167,7 @@ unit cgobj;
|
|||||||
{ copies len bytes from the source to destination, if }
|
{ copies len bytes from the source to destination, if }
|
||||||
{ loadref is true, it assumes that it first must load }
|
{ loadref is true, it assumes that it first must load }
|
||||||
{ the source address from the memory location where }
|
{ the source address from the memory location where }
|
||||||
{ source points to }
|
{ source points to }
|
||||||
procedure g_concatcopy(list : paasmoutput;const source,dest : treference;len : aword;loadref : boolean);virtual;
|
procedure g_concatcopy(list : paasmoutput;const source,dest : treference;len : aword;loadref : boolean);virtual;
|
||||||
|
|
||||||
{ uses the addr of ref as param, was emitpushreferenceaddr }
|
{ uses the addr of ref as param, was emitpushreferenceaddr }
|
||||||
@ -231,10 +231,11 @@ unit cgobj;
|
|||||||
if unusedscratchregisters=[] then
|
if unusedscratchregisters=[] then
|
||||||
internalerror(68996);
|
internalerror(68996);
|
||||||
|
|
||||||
for i:=1 to max_scratch_regs do
|
for i:=scratch_reg_array_pointer to (scratch_reg_array_pointer +
|
||||||
if scratch_regs[i] in unusedscratchregisters then
|
max_scratch_regs) do
|
||||||
|
if scratch_regs[(i mod max_scratch_regs)+1] in unusedscratchregisters then
|
||||||
begin
|
begin
|
||||||
r:=scratch_regs[i];
|
r:=scratch_regs[(i mod max_scratch_regs)+1];
|
||||||
break;
|
break;
|
||||||
end;
|
end;
|
||||||
exclude(unusedscratchregisters,r);
|
exclude(unusedscratchregisters,r);
|
||||||
@ -327,7 +328,6 @@ unit cgobj;
|
|||||||
hr:=get_scratch_reg(list);
|
hr:=get_scratch_reg(list);
|
||||||
a_load_const_reg(list,size,a,hr);
|
a_load_const_reg(list,size,a,hr);
|
||||||
a_load_reg_ref(list,size,hr,ref);
|
a_load_reg_ref(list,size,hr,ref);
|
||||||
a_reg_dealloc(list,hr);
|
|
||||||
free_scratch_reg(list,hr);
|
free_scratch_reg(list,hr);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -1080,7 +1080,10 @@ unit cgobj;
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.23 1999-08-25 12:00:11 jonas
|
Revision 1.24 1999-08-26 14:51:54 jonas
|
||||||
|
* changed get_scratch_reg so it actually uses the\n scratch_reg_array_pointer
|
||||||
|
|
||||||
|
Revision 1.23 1999/08/25 12:00:11 jonas
|
||||||
* changed pai386, paippc and paiapha (same for tai*) to paicpu (taicpu)
|
* changed pai386, paippc and paiapha (same for tai*) to paicpu (taicpu)
|
||||||
|
|
||||||
Revision 1.22 1999/08/18 17:05:55 florian
|
Revision 1.22 1999/08/18 17:05:55 florian
|
||||||
|
Loading…
Reference in New Issue
Block a user