mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-20 10:45:08 +02:00
* bugfix of hdisponen (base must be set, not index)
* more portability fixes
This commit is contained in:
parent
fb5c2521f2
commit
d75603c2ed
@ -144,7 +144,7 @@ unit cg64f32;
|
||||
tmpref := ref;
|
||||
if (tmpref.base=reglo) then
|
||||
begin
|
||||
tmpreg := get_scratch_reg(list);
|
||||
tmpreg := get_scratch_reg_int(list);
|
||||
got_scratch:=true;
|
||||
a_load_reg_reg(list,OS_ADDR,tmpref.base,tmpreg);
|
||||
tmpref.base:=tmpreg;
|
||||
@ -152,7 +152,7 @@ unit cg64f32;
|
||||
else
|
||||
if (tmpref.index=reglo) then
|
||||
begin
|
||||
tmpreg := get_scratch_reg(list);
|
||||
tmpreg := get_scratch_reg_int(list);
|
||||
got_scratch:=true;
|
||||
a_load_reg_reg(list,OS_ADDR,tmpref.index,tmpreg);
|
||||
tmpref.index:=tmpreg;
|
||||
@ -456,7 +456,7 @@ unit cg64f32;
|
||||
end
|
||||
else
|
||||
begin
|
||||
hreg := get_scratch_reg(list);
|
||||
hreg := get_scratch_reg_int(list);
|
||||
got_scratch := true;
|
||||
a_load64high_ref_reg(list,p.location.reference,hreg);
|
||||
end;
|
||||
@ -504,7 +504,7 @@ unit cg64f32;
|
||||
end
|
||||
else
|
||||
begin
|
||||
hreg := get_scratch_reg(list);
|
||||
hreg := get_scratch_reg_int(list);
|
||||
got_scratch := true;
|
||||
a_load64low_ref_reg(list,p.location.reference,hreg);
|
||||
end;
|
||||
@ -558,7 +558,7 @@ unit cg64f32;
|
||||
end
|
||||
else
|
||||
begin
|
||||
hreg := get_scratch_reg(list);
|
||||
hreg := get_scratch_reg_int(list);
|
||||
got_scratch := true;
|
||||
|
||||
opsize := def_cgsize(p.resulttype.def);
|
||||
@ -591,7 +591,11 @@ begin
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.13 2002-05-18 13:34:05 peter
|
||||
Revision 1.14 2002-05-20 13:30:40 carl
|
||||
* bugfix of hdisponen (base must be set, not index)
|
||||
* more portability fixes
|
||||
|
||||
Revision 1.13 2002/05/18 13:34:05 peter
|
||||
* readded missing revisions
|
||||
|
||||
Revision 1.12 2002/05/16 19:46:35 carl
|
||||
|
@ -127,8 +127,9 @@ unit cgbase;
|
||||
{ also an exit label, only used we need to clear only the stack }
|
||||
aktexit2label : tasmlabel;
|
||||
|
||||
{ only used in constructor for fail or if getmem fails }
|
||||
faillabel,quickexitlabel : tasmlabel;
|
||||
{# only used in constructor for fail keyword or if getmem fails }
|
||||
faillabel : tasmlabel;
|
||||
quickexitlabel : tasmlabel;
|
||||
|
||||
{# true, if there was an error while code generation occurs }
|
||||
codegenerror : boolean;
|
||||
@ -524,7 +525,11 @@ begin
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.16 2002-05-18 13:34:05 peter
|
||||
Revision 1.17 2002-05-20 13:30:40 carl
|
||||
* bugfix of hdisponen (base must be set, not index)
|
||||
* more portability fixes
|
||||
|
||||
Revision 1.16 2002/05/18 13:34:05 peter
|
||||
* readded missing revisions
|
||||
|
||||
Revision 1.15 2002/05/16 19:46:35 carl
|
||||
|
@ -69,14 +69,22 @@ unit cgobj;
|
||||
{# Deallocates register r by inserting a pa_regdealloc record}
|
||||
procedure a_reg_dealloc(list : taasmoutput;r : tregister);
|
||||
|
||||
{# @abstract(Returns a register for use as scratch register)
|
||||
{# @abstract(Returns an int register for use as scratch register)
|
||||
This routine returns a register which can be used by
|
||||
the code generator as a scratch register. Since
|
||||
scratch_registers are scarce resources, the register
|
||||
should be freed by calling @link(get_scratch_reg) as
|
||||
the code generator as a general purpose scratch register.
|
||||
Since scratch_registers are scarce resources, the register
|
||||
should be freed by calling @link(free_scratch_reg) as
|
||||
soon as it is no longer required.
|
||||
}
|
||||
function get_scratch_reg(list : taasmoutput) : tregister;
|
||||
function get_scratch_reg_int(list : taasmoutput) : tregister;virtual;
|
||||
{# @abstract(Returns an address register for use as scratch register)
|
||||
This routine returns a register which can be used by
|
||||
the code generator as a pointer scratch register.
|
||||
Since scratch_registers are scarce resources, the register
|
||||
should be freed by calling @link(free_scratch_reg) as
|
||||
soon as it is no longer required.
|
||||
}
|
||||
function get_scratch_reg_address(list : taasmoutput) : tregister;virtual;
|
||||
{# @abstract(Releases a scratch register)
|
||||
|
||||
Releases a scratch register.
|
||||
@ -372,7 +380,7 @@ unit cgobj;
|
||||
list.concat(tai_label.create(l));
|
||||
end;
|
||||
|
||||
function tcg.get_scratch_reg(list : taasmoutput) : tregister;
|
||||
function tcg.get_scratch_reg_int(list : taasmoutput) : tregister;
|
||||
|
||||
var
|
||||
r : tregister;
|
||||
@ -394,8 +402,15 @@ unit cgobj;
|
||||
if scratch_register_array_pointer>max_scratch_regs then
|
||||
scratch_register_array_pointer:=1;
|
||||
a_reg_alloc(list,r);
|
||||
get_scratch_reg:=r;
|
||||
get_scratch_reg_int:=r;
|
||||
end;
|
||||
|
||||
{ the default behavior simply returns a general purpose register }
|
||||
function tcg.get_scratch_reg_address(list : taasmoutput) : tregister;
|
||||
begin
|
||||
get_scratch_reg_address := get_scratch_reg_int(list);
|
||||
end;
|
||||
|
||||
|
||||
procedure tcg.free_scratch_reg(list : taasmoutput;r : tregister);
|
||||
|
||||
@ -414,7 +429,7 @@ unit cgobj;
|
||||
hr : tregister;
|
||||
|
||||
begin
|
||||
hr:=get_scratch_reg(list);
|
||||
hr:=get_scratch_reg_int(list);
|
||||
a_load_const_reg(list,size,a,hr);
|
||||
a_param_reg(list,size,hr,nr);
|
||||
free_scratch_reg(list,hr);
|
||||
@ -426,7 +441,7 @@ unit cgobj;
|
||||
hr : tregister;
|
||||
|
||||
begin
|
||||
hr:=get_scratch_reg(list);
|
||||
hr:=get_scratch_reg_int(list);
|
||||
a_load_ref_reg(list,size,r,hr);
|
||||
a_param_reg(list,size,hr,nr);
|
||||
free_scratch_reg(list,hr);
|
||||
@ -457,7 +472,7 @@ unit cgobj;
|
||||
hr : tregister;
|
||||
|
||||
begin
|
||||
hr:=get_scratch_reg(list);
|
||||
hr:=get_scratch_reg_address(list);
|
||||
a_loadaddr_ref_reg(list,r,hr);
|
||||
a_param_reg(list,OS_ADDR,hr,nr);
|
||||
free_scratch_reg(list,hr);
|
||||
@ -482,7 +497,7 @@ unit cgobj;
|
||||
tmpreg := rg.getregisterint(exprasmlist)
|
||||
else
|
||||
{$endif i386}
|
||||
tmpreg := get_scratch_reg(list);
|
||||
tmpreg := get_scratch_reg_int(list);
|
||||
tmpreg:=rg.makeregsize(tmpreg,size);
|
||||
a_load_ref_reg(list,size,sref,tmpreg);
|
||||
a_load_reg_ref(list,size,tmpreg,dref);
|
||||
@ -501,7 +516,7 @@ unit cgobj;
|
||||
tmpreg: tregister;
|
||||
|
||||
begin
|
||||
tmpreg := get_scratch_reg(list);
|
||||
tmpreg := get_scratch_reg_int(list);
|
||||
a_load_const_reg(list,size,a,tmpreg);
|
||||
a_load_reg_ref(list,size,tmpreg,ref);
|
||||
free_scratch_reg(list,tmpreg);
|
||||
@ -600,7 +615,7 @@ unit cgobj;
|
||||
tmpreg: tregister;
|
||||
|
||||
begin
|
||||
tmpreg := get_scratch_reg(list);
|
||||
tmpreg := get_scratch_reg_int(list);
|
||||
a_load_ref_reg(list,size,ref,tmpreg);
|
||||
a_op_const_reg(list,op,a,tmpreg);
|
||||
a_load_reg_ref(list,size,tmpreg,ref);
|
||||
@ -628,7 +643,7 @@ unit cgobj;
|
||||
tmpreg: tregister;
|
||||
|
||||
begin
|
||||
tmpreg := get_scratch_reg(list);
|
||||
tmpreg := get_scratch_reg_int(list);
|
||||
a_load_ref_reg(list,size,ref,tmpreg);
|
||||
a_op_reg_reg(list,op,size,reg,tmpreg);
|
||||
a_load_reg_ref(list,size,tmpreg,ref);
|
||||
@ -651,7 +666,7 @@ unit cgobj;
|
||||
end;
|
||||
else
|
||||
begin
|
||||
tmpreg := get_scratch_reg(list);
|
||||
tmpreg := get_scratch_reg_int(list);
|
||||
a_load_ref_reg(list,size,ref,tmpreg);
|
||||
a_op_reg_reg(list,op,size,tmpreg,reg);
|
||||
free_scratch_reg(list,tmpreg);
|
||||
@ -685,7 +700,7 @@ unit cgobj;
|
||||
a_op_ref_reg(list,op,loc.size,ref,loc.register);
|
||||
LOC_REFERENCE,LOC_CREFERENCE:
|
||||
begin
|
||||
tmpreg := get_scratch_reg(list);
|
||||
tmpreg := get_scratch_reg_int(list);
|
||||
tmpreg:=rg.makeregsize(tmpreg,loc.size);
|
||||
a_load_ref_reg(list,loc.size,ref,tmpreg);
|
||||
a_op_reg_ref(list,op,loc.size,tmpreg,loc.reference);
|
||||
@ -719,7 +734,7 @@ unit cgobj;
|
||||
tmpreg: tregister;
|
||||
|
||||
begin
|
||||
tmpreg := get_scratch_reg(list);
|
||||
tmpreg := get_scratch_reg_int(list);
|
||||
a_load_ref_reg(list,size,ref,tmpreg);
|
||||
a_cmp_const_reg_label(list,size,cmp_op,a,tmpreg,l);
|
||||
free_scratch_reg(list,tmpreg);
|
||||
@ -745,7 +760,7 @@ unit cgobj;
|
||||
tmpreg: tregister;
|
||||
|
||||
begin
|
||||
tmpreg := get_scratch_reg(list);
|
||||
tmpreg := get_scratch_reg_int(list);
|
||||
a_load_ref_reg(list,size,ref,tmpreg);
|
||||
a_cmp_reg_reg_label(list,size,cmp_op,tmpreg,reg,l);
|
||||
free_scratch_reg(list,tmpreg);
|
||||
@ -788,7 +803,7 @@ unit cgobj;
|
||||
tmpreg := rg.getregisterint(exprasmlist)
|
||||
else
|
||||
{$endif i386}
|
||||
tmpreg := get_scratch_reg(list);
|
||||
tmpreg := get_scratch_reg_int(list);
|
||||
tmpreg := rg.makeregsize(tmpreg,size);
|
||||
a_load_ref_reg(list,size,loc.reference,tmpreg);
|
||||
a_cmp_ref_reg_label(list,size,cmp_op,ref,tmpreg,l);
|
||||
@ -1029,7 +1044,7 @@ unit cgobj;
|
||||
lto := 0;
|
||||
end;
|
||||
|
||||
hreg := get_scratch_reg(list);
|
||||
hreg := get_scratch_reg_int(list);
|
||||
if (p.location.loc in [LOC_REGISTER,LOC_CREGISTER]) then
|
||||
a_op_const_reg_reg(list,OP_SUB,def_cgsize(p.resulttype.def),
|
||||
aword(longint(lto and $ffffffff)),p.location.register,hreg)
|
||||
@ -1106,10 +1121,10 @@ unit cgobj;
|
||||
reference_reset_base(href, procinfo^.framepointer,procinfo^.selfpointer_offset);
|
||||
a_param_ref(list, OS_ADDR,href,1);
|
||||
a_call_name(list,'FPC_NEW_CLASS');
|
||||
a_load_reg_reg(list,OS_INT,accumulator,SELF_POINTER_REG);
|
||||
a_load_reg_reg(list,OS_ADDR,accumulator,SELF_POINTER_REG);
|
||||
{ save the self pointer result }
|
||||
a_load_reg_ref(list,OS_ADDR,SELF_POINTER_REG,href);
|
||||
a_cmp_const_reg_label(list,OS_INT,OC_EQ,0,accumulator,faillabel);
|
||||
a_cmp_const_reg_label(list,OS_ADDR,OC_EQ,0,accumulator,faillabel);
|
||||
end
|
||||
else if is_object(procinfo^._class) then
|
||||
begin
|
||||
@ -1118,19 +1133,19 @@ unit cgobj;
|
||||
{ parameter 2 : address of pointer to vmt }
|
||||
{ this is the first(?) parameter which was pushed to the constructor }
|
||||
reference_reset_base(href, procinfo^.framepointer,procinfo^.selfpointer_offset-POINTER_SIZE);
|
||||
hregister:=get_scratch_reg(list);
|
||||
hregister:=get_scratch_reg_address(list);
|
||||
a_loadaddr_ref_reg(list, href, hregister);
|
||||
a_param_reg(list, OS_INT,hregister,1);
|
||||
a_param_reg(list, OS_ADDR,hregister,1);
|
||||
free_scratch_reg(list, hregister);
|
||||
{ parameter 1 : address of self pointer }
|
||||
reference_reset_base(href, procinfo^.framepointer,procinfo^.selfpointer_offset);
|
||||
hregister:=get_scratch_reg(list);
|
||||
hregister:=get_scratch_reg_address(list);
|
||||
a_loadaddr_ref_reg(list, href, hregister);
|
||||
a_param_reg(list, OS_INT,hregister,1);
|
||||
a_param_reg(list, OS_ADDR,hregister,1);
|
||||
free_scratch_reg(list, hregister);
|
||||
a_call_name(list,'FPC_HELP_CONSTRUCTOR');
|
||||
a_load_reg_reg(list,OS_INT,accumulator,SELF_POINTER_REG);
|
||||
a_cmp_const_reg_label(list,OS_INT,OC_EQ,0,accumulator,faillabel);
|
||||
a_load_reg_reg(list,OS_ADDR,accumulator,SELF_POINTER_REG);
|
||||
a_cmp_const_reg_label(list,OS_ADDR,OC_EQ,0,accumulator,faillabel);
|
||||
end
|
||||
else
|
||||
internalerror(200006161);
|
||||
@ -1164,7 +1179,11 @@ finalization
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.25 2002-05-18 13:34:05 peter
|
||||
Revision 1.26 2002-05-20 13:30:40 carl
|
||||
* bugfix of hdisponen (base must be set, not index)
|
||||
* more portability fixes
|
||||
|
||||
Revision 1.25 2002/05/18 13:34:05 peter
|
||||
* readded missing revisions
|
||||
|
||||
Revision 1.24 2002/05/16 19:46:35 carl
|
||||
|
@ -363,7 +363,7 @@ unit cgcpu;
|
||||
OS_8,OS_S8,
|
||||
OS_16,OS_S16:
|
||||
begin
|
||||
tmpreg := get_scratch_reg(list);
|
||||
tmpreg := get_scratch_reg_address(list);
|
||||
a_load_ref_reg(list,size,r,tmpreg);
|
||||
if target_info.alignment.paraalign = 2 then
|
||||
list.concat(taicpu.op_reg(A_PUSH,S_W,rg.makeregsize(tmpreg,OS_16)))
|
||||
@ -397,7 +397,7 @@ unit cgcpu;
|
||||
list.concat(Taicpu.Op_reg(A_PUSH,S_L,r.base))
|
||||
else
|
||||
begin
|
||||
tmpreg := get_scratch_reg(list);
|
||||
tmpreg := get_scratch_reg_address(list);
|
||||
a_loadaddr_ref_reg(list,r,tmpreg);
|
||||
list.concat(taicpu.op_reg(A_PUSH,S_L,tmpreg));
|
||||
free_scratch_reg(list,tmpreg);
|
||||
@ -790,7 +790,7 @@ unit cgcpu;
|
||||
S_W: regloadsize := OS_16;
|
||||
else regloadsize := OS_32;
|
||||
end;
|
||||
tmpreg := get_scratch_reg(list);
|
||||
tmpreg := get_scratch_reg_int(list);
|
||||
a_load_reg_reg(list,regloadsize,src,tmpreg);
|
||||
end;
|
||||
if not(src in [R_ECX,R_CX,R_CL]) then
|
||||
@ -1778,7 +1778,11 @@ begin
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.20 2002-05-18 13:34:22 peter
|
||||
Revision 1.21 2002-05-20 13:30:40 carl
|
||||
* bugfix of hdisponen (base must be set, not index)
|
||||
* more portability fixes
|
||||
|
||||
Revision 1.20 2002/05/18 13:34:22 peter
|
||||
* readded missing revisions
|
||||
|
||||
Revision 1.19 2002/05/16 19:46:50 carl
|
||||
|
@ -161,7 +161,7 @@ implementation
|
||||
begin
|
||||
if inlined then
|
||||
begin
|
||||
tmpreg:=cg.get_scratch_reg(exprasmlist);
|
||||
tmpreg:=cg.get_scratch_reg_address(exprasmlist);
|
||||
cg.a_loadaddr_ref_reg(exprasmlist,left.location.reference,tmpreg);
|
||||
reference_reset_base(href,procinfo^.framepointer,para_offset-pushedparasize);
|
||||
cg.a_load_reg_ref(exprasmlist,OS_ADDR,tmpreg,href);
|
||||
@ -202,7 +202,7 @@ implementation
|
||||
inc(pushedparasize,4);
|
||||
if inlined then
|
||||
begin
|
||||
tmpreg:=cg.get_scratch_reg(exprasmlist);
|
||||
tmpreg:=cg.get_scratch_reg_address(exprasmlist);
|
||||
cg.a_loadaddr_ref_reg(exprasmlist,left.location.reference,tmpreg);
|
||||
reference_reset_base(href,procinfo^.framepointer,para_offset-pushedparasize);
|
||||
cg.a_load_reg_ref(exprasmlist,OS_ADDR,tmpreg,href);
|
||||
@ -249,7 +249,7 @@ implementation
|
||||
inc(pushedparasize,4);
|
||||
if inlined then
|
||||
begin
|
||||
tmpreg:=cg.get_scratch_reg(exprasmlist);
|
||||
tmpreg:=cg.get_scratch_reg_address(exprasmlist);
|
||||
cg.a_loadaddr_ref_reg(exprasmlist,left.location.reference,tmpreg);
|
||||
reference_reset_base(href,procinfo^.framepointer,para_offset-pushedparasize);
|
||||
cg.a_load_reg_ref(exprasmlist,OS_ADDR,tmpreg,href);
|
||||
@ -551,7 +551,7 @@ implementation
|
||||
{$endif not OLD_C_STACK}
|
||||
if inlined then
|
||||
begin
|
||||
hregister:=cg.get_scratch_reg(exprasmlist);
|
||||
hregister:=cg.get_scratch_reg_address(exprasmlist);
|
||||
cg.a_loadaddr_ref_reg(exprasmlist,funcretref,hregister);
|
||||
reference_reset_base(href,procinfo^.framepointer,inlinecode.retoffset);
|
||||
cg.a_load_reg_ref(exprasmlist,OS_ADDR,hregister,href);
|
||||
@ -857,7 +857,7 @@ implementation
|
||||
begin
|
||||
cg.a_param_reg(exprasmlist,OS_ADDR,self_pointer_reg,1);
|
||||
reference_reset_base(href,self_pointer_reg,0);
|
||||
tmpreg:=cg.get_scratch_reg(exprasmlist);
|
||||
tmpreg:=cg.get_scratch_reg_address(exprasmlist);
|
||||
cg.a_load_ref_reg(exprasmlist,OS_ADDR,href,tmpreg);
|
||||
reference_reset_base(href,tmpreg,72);
|
||||
cg.a_call_ref(exprasmlist,href);
|
||||
@ -945,7 +945,7 @@ implementation
|
||||
begin
|
||||
{ this is one point where we need vmt_offset (PM) }
|
||||
reference_reset_base(href,R_ESI,tprocdef(procdefinition)._class.vmt_offset);
|
||||
tmpreg:=cg.get_scratch_reg(exprasmlist);
|
||||
tmpreg:=cg.get_scratch_reg_address(exprasmlist);
|
||||
cg.a_load_ref_reg(exprasmlist,OS_ADDR,href,tmpreg);
|
||||
reference_reset_base(href,tmpreg,0);
|
||||
release_tmpreg:=true;
|
||||
@ -1022,7 +1022,7 @@ implementation
|
||||
(right.location.reference.index=R_ESI) then
|
||||
begin
|
||||
reference_release(exprasmlist,right.location.reference);
|
||||
hregister:=cg.get_scratch_reg(exprasmlist);
|
||||
hregister:=cg.get_scratch_reg_address(exprasmlist);
|
||||
cg.a_load_ref_reg(exprasmlist,OS_ADDR,right.location.reference,hregister);
|
||||
end;
|
||||
|
||||
@ -1133,7 +1133,7 @@ implementation
|
||||
emitjmp(C_Z,constructorfailed);
|
||||
cg.a_param_reg(exprasmlist,OS_ADDR,self_pointer_reg,1);
|
||||
reference_reset_base(href,self_pointer_reg,0);
|
||||
tmpreg:=cg.get_scratch_reg(exprasmlist);
|
||||
tmpreg:=cg.get_scratch_reg_address(exprasmlist);
|
||||
cg.a_load_ref_reg(exprasmlist,OS_ADDR,href,tmpreg);
|
||||
reference_reset_base(href,tmpreg,68);
|
||||
cg.a_call_ref(exprasmlist,href);
|
||||
@ -1484,7 +1484,11 @@ begin
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.53 2002-05-18 13:34:23 peter
|
||||
Revision 1.54 2002-05-20 13:30:40 carl
|
||||
* bugfix of hdisponen (base must be set, not index)
|
||||
* more portability fixes
|
||||
|
||||
Revision 1.53 2002/05/18 13:34:23 peter
|
||||
* readded missing revisions
|
||||
|
||||
Revision 1.52 2002/05/16 19:46:51 carl
|
||||
|
@ -105,7 +105,7 @@ implementation
|
||||
hregister:=left.location.register;
|
||||
else
|
||||
begin
|
||||
hregister:=cg.get_scratch_reg(exprasmlist);
|
||||
hregister:=cg.get_scratch_reg_int(exprasmlist);
|
||||
freereg:=true;
|
||||
cg.a_load_reg_reg(exprasmlist,left.location.size,left.location.register,hregister);
|
||||
end;
|
||||
@ -114,7 +114,7 @@ implementation
|
||||
LOC_REFERENCE,
|
||||
LOC_CREFERENCE :
|
||||
begin
|
||||
hregister:=cg.get_scratch_reg(exprasmlist);
|
||||
hregister:=cg.get_scratch_reg_int(exprasmlist);
|
||||
freereg:=true;
|
||||
if left.location.size in [OS_64,OS_S64] then
|
||||
begin
|
||||
@ -244,7 +244,7 @@ implementation
|
||||
begin
|
||||
if left.location.size in [OS_64,OS_S64] then
|
||||
begin
|
||||
hregister:=cg.get_scratch_reg(exprasmlist);
|
||||
hregister:=cg.get_scratch_reg_int(exprasmlist);
|
||||
cg.a_load_reg_reg(exprasmlist,OS_32,left.location.registerlow,hregister);
|
||||
cg.a_op_reg_reg(exprasmlist,OP_OR,OS_32,left.location.registerhigh,hregister);
|
||||
cg.free_scratch_reg(exprasmlist,hregister);
|
||||
@ -365,7 +365,11 @@ begin
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.41 2002-05-18 13:34:24 peter
|
||||
Revision 1.42 2002-05-20 13:30:40 carl
|
||||
* bugfix of hdisponen (base must be set, not index)
|
||||
* more portability fixes
|
||||
|
||||
Revision 1.41 2002/05/18 13:34:24 peter
|
||||
* readded missing revisions
|
||||
|
||||
Revision 1.40 2002/05/16 19:46:51 carl
|
||||
|
@ -47,9 +47,6 @@ interface
|
||||
procedure pass_2;override;
|
||||
end;
|
||||
|
||||
ti386failnode = class(tfailnode)
|
||||
procedure pass_2;override;
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
@ -720,26 +717,20 @@ implementation
|
||||
end;
|
||||
|
||||
|
||||
{*****************************************************************************
|
||||
SecondFail
|
||||
*****************************************************************************}
|
||||
|
||||
procedure ti386failnode.pass_2;
|
||||
begin
|
||||
cg.a_jmp_always(exprasmlist,faillabel);
|
||||
end;
|
||||
|
||||
|
||||
begin
|
||||
craisenode:=ti386raisenode;
|
||||
ctryexceptnode:=ti386tryexceptnode;
|
||||
ctryfinallynode:=ti386tryfinallynode;
|
||||
connode:=ti386onnode;
|
||||
cfailnode:=ti386failnode;
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.26 2002-05-18 13:34:25 peter
|
||||
Revision 1.27 2002-05-20 13:30:41 carl
|
||||
* bugfix of hdisponen (base must be set, not index)
|
||||
* more portability fixes
|
||||
|
||||
Revision 1.26 2002/05/18 13:34:25 peter
|
||||
* readded missing revisions
|
||||
|
||||
Revision 1.25 2002/05/16 19:46:51 carl
|
||||
|
@ -63,6 +63,10 @@ interface
|
||||
procedure pass_2;override;
|
||||
end;
|
||||
|
||||
tcgfailnode = class(tfailnode)
|
||||
procedure pass_2;override;
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
@ -597,6 +601,18 @@ do_jmp:
|
||||
rg.cleartempgen;
|
||||
secondpass(left);
|
||||
end;
|
||||
|
||||
|
||||
{*****************************************************************************
|
||||
SecondFail
|
||||
*****************************************************************************}
|
||||
|
||||
procedure tcgfailnode.pass_2;
|
||||
begin
|
||||
cg.a_jmp_always(exprasmlist,faillabel);
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
begin
|
||||
@ -608,10 +624,15 @@ begin
|
||||
ccontinuenode:=tcgcontinuenode;
|
||||
cgotonode:=tcggotonode;
|
||||
clabelnode:=tcglabelnode;
|
||||
cfailnode:=tcgfailnode;
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.18 2002-05-18 13:34:09 peter
|
||||
Revision 1.19 2002-05-20 13:30:40 carl
|
||||
* bugfix of hdisponen (base must be set, not index)
|
||||
* more portability fixes
|
||||
|
||||
Revision 1.18 2002/05/18 13:34:09 peter
|
||||
* readded missing revisions
|
||||
|
||||
Revision 1.17 2002/05/16 19:46:37 carl
|
||||
|
@ -57,7 +57,7 @@ implementation
|
||||
ncnv,ncon,nmem,
|
||||
aasm,cpuasm,regvars,
|
||||
cginfo,cgbase,pass_2,
|
||||
cpubase,
|
||||
cpubase,cpuinfo,
|
||||
tgobj,ncgutil,cgobj,cg64f32,rgobj,rgcpu;
|
||||
|
||||
{*****************************************************************************
|
||||
@ -188,7 +188,7 @@ implementation
|
||||
end;
|
||||
if (lexlevel>symtable.symtablelevel) then
|
||||
begin
|
||||
hregister:=rg.getregisterint(exprasmlist);
|
||||
hregister:=rg.getaddressregister(exprasmlist);
|
||||
{ make a reference }
|
||||
reference_reset_base(href,procinfo^.framepointer,procinfo^.framepointer_offset);
|
||||
cg.a_load_ref_reg(exprasmlist,OS_ADDR,href,hregister);
|
||||
@ -197,7 +197,7 @@ implementation
|
||||
while (i>symtable.symtablelevel) do
|
||||
begin
|
||||
{ make a reference }
|
||||
reference_reset_base(href,hregister,8);
|
||||
reference_reset_base(href,hregister,target_info.first_parm_offset);
|
||||
cg.a_load_ref_reg(exprasmlist,OS_ADDR,href,hregister);
|
||||
dec(i);
|
||||
end;
|
||||
@ -264,8 +264,17 @@ implementation
|
||||
begin
|
||||
if assigned(left) then
|
||||
begin
|
||||
location_reset(location,LOC_CREFERENCE,OS_64);
|
||||
tg.gettempofsizereference(exprasmlist,8,location.reference);
|
||||
{
|
||||
THIS IS A TERRIBLE HACK!!!!!! WHICH WILL NOT WORK
|
||||
ON 64-BIT SYSTEMS: SINCE PROCSYM FOR METHODS
|
||||
CONSISTS OF TWO OS_ADDR, so you cannot set it
|
||||
to OS_64 - how to solve?? Carl
|
||||
}
|
||||
if (sizeof(aword) = 4) then
|
||||
location_reset(location,LOC_CREFERENCE,OS_64)
|
||||
else
|
||||
internalerror(20020520);
|
||||
tg.gettempofsizereference(exprasmlist,2*POINTER_SIZE,location.reference);
|
||||
freereg:=false;
|
||||
|
||||
{ called as type.method, then we only need to return
|
||||
@ -305,7 +314,7 @@ implementation
|
||||
|
||||
{ store the class instance address }
|
||||
href:=location.reference;
|
||||
inc(href.offset,4);
|
||||
inc(href.offset,POINTER_SIZE);
|
||||
cg.a_load_reg_ref(exprasmlist,OS_ADDR,hregister,href);
|
||||
{ hregister will be reused when loading a virtual method }
|
||||
freereg:=true;
|
||||
@ -338,7 +347,7 @@ implementation
|
||||
rg.ungetregisterint(exprasmlist,hregister);
|
||||
{ load address of the function }
|
||||
reference_reset_symbol(href,newasmsymbol(tprocdef(resulttype.def).mangledname),0);
|
||||
hregister:=cg.get_scratch_reg(exprasmlist);
|
||||
hregister:=cg.get_scratch_reg_address(exprasmlist);
|
||||
cg.a_loadaddr_ref_reg(exprasmlist,href,hregister);
|
||||
cg.a_load_reg_ref(exprasmlist,OS_ADDR,hregister,location.reference);
|
||||
cg.free_scratch_reg(exprasmlist,hregister);
|
||||
@ -662,7 +671,7 @@ implementation
|
||||
if (not inlining_procedure) and
|
||||
(lexlevel<>funcretsym.owner.symtablelevel) then
|
||||
begin
|
||||
hreg:=rg.getregisterint(exprasmlist);
|
||||
hreg:=rg.getaddressregister(exprasmlist);
|
||||
hr_valid:=true;
|
||||
reference_reset_base(href,procinfo^.framepointer,procinfo^.framepointer_offset);
|
||||
cg.a_load_ref_reg(exprasmlist,OS_ADDR,href,hreg);
|
||||
@ -843,7 +852,7 @@ implementation
|
||||
end
|
||||
else
|
||||
cg.a_param_loc(exprasmlist,hp.left.location,-1);
|
||||
inc(pushedparasize,4);
|
||||
inc(pushedparasize,pointer_size);
|
||||
end
|
||||
else
|
||||
begin
|
||||
@ -852,7 +861,7 @@ implementation
|
||||
if vaddr then
|
||||
begin
|
||||
location_force_mem(exprasmlist,hp.left.location);
|
||||
tmpreg:=cg.get_scratch_reg(exprasmlist);
|
||||
tmpreg:=cg.get_scratch_reg_address(exprasmlist);
|
||||
cg.a_loadaddr_ref_reg(exprasmlist,hp.left.location.reference,tmpreg);
|
||||
cg.a_load_reg_ref(exprasmlist,cg.reg_cgsize(tmpreg),tmpreg,href);
|
||||
cg.free_scratch_reg(exprasmlist,tmpreg);
|
||||
@ -912,7 +921,11 @@ begin
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.8 2002-05-18 13:34:09 peter
|
||||
Revision 1.9 2002-05-20 13:30:40 carl
|
||||
* bugfix of hdisponen (base must be set, not index)
|
||||
* more portability fixes
|
||||
|
||||
Revision 1.8 2002/05/18 13:34:09 peter
|
||||
* readded missing revisions
|
||||
|
||||
Revision 1.7 2002/05/18 11:17:03 peter
|
||||
|
@ -109,6 +109,7 @@ implementation
|
||||
|
||||
procedure tcghnewnode.pass_2;
|
||||
begin
|
||||
{ completely resolved in first pass now }
|
||||
end;
|
||||
|
||||
|
||||
@ -130,20 +131,20 @@ implementation
|
||||
if not rg.isaddressregister(left.location.register) then
|
||||
begin
|
||||
location_release(exprasmlist,left.location);
|
||||
location.reference.index := rg.getaddressregister(exprasmlist);
|
||||
location.reference.base := rg.getaddressregister(exprasmlist);
|
||||
cg.a_load_reg_reg(exprasmlist,OS_ADDR,left.location.register,
|
||||
location.reference.index);
|
||||
location.reference.base);
|
||||
end
|
||||
else
|
||||
location.reference.index := left.location.register;
|
||||
location.reference.base := left.location.register;
|
||||
end;
|
||||
LOC_CREGISTER,
|
||||
LOC_CREFERENCE,
|
||||
LOC_REFERENCE:
|
||||
begin
|
||||
location_release(exprasmlist,left.location);
|
||||
location.reference.index:=rg.getaddressregister(exprasmlist);
|
||||
cg.a_load_loc_reg(exprasmlist,left.location,location.reference.index);
|
||||
location.reference.base:=rg.getaddressregister(exprasmlist);
|
||||
cg.a_load_loc_reg(exprasmlist,left.location,location.reference.base);
|
||||
end;
|
||||
else
|
||||
internalerror(2002032217);
|
||||
@ -183,8 +184,10 @@ implementation
|
||||
cg.a_load_ref_reg(exprasmlist,OS_ADDR,left.location.reference,
|
||||
location.register)
|
||||
else
|
||||
begin
|
||||
cg.a_loadaddr_ref_reg(exprasmlist,left.location.reference,
|
||||
location.register);
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
@ -355,13 +358,18 @@ implementation
|
||||
else
|
||||
{ call can have happend with a property }
|
||||
begin
|
||||
tmpreg := cg.get_scratch_reg(exprasmlist);
|
||||
usetemp:=true;
|
||||
if is_class_or_interface(left.resulttype.def) then
|
||||
cg.a_load_loc_reg(exprasmlist,left.location,tmpreg)
|
||||
begin
|
||||
tmpreg := cg.get_scratch_reg_int(exprasmlist);
|
||||
cg.a_load_loc_reg(exprasmlist,left.location,tmpreg)
|
||||
end
|
||||
else
|
||||
cg.a_loadaddr_ref_reg(exprasmlist,
|
||||
left.location.reference,tmpreg);
|
||||
begin
|
||||
tmpreg := cg.get_scratch_reg_address(exprasmlist);
|
||||
cg.a_loadaddr_ref_reg(exprasmlist,
|
||||
left.location.reference,tmpreg);
|
||||
end;
|
||||
end;
|
||||
|
||||
location_release(exprasmlist,left.location);
|
||||
@ -454,7 +462,11 @@ begin
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.12 2002-05-18 13:34:09 peter
|
||||
Revision 1.13 2002-05-20 13:30:40 carl
|
||||
* bugfix of hdisponen (base must be set, not index)
|
||||
* more portability fixes
|
||||
|
||||
Revision 1.12 2002/05/18 13:34:09 peter
|
||||
* readded missing revisions
|
||||
|
||||
Revision 1.11 2002/05/16 19:46:37 carl
|
||||
|
@ -874,7 +874,7 @@ implementation
|
||||
vs_out :
|
||||
begin
|
||||
reference_reset_base(href,procinfo^.framepointer,tvarsym(p).address+procinfo^.para_offset);
|
||||
tmpreg:=cg.get_scratch_reg(list);
|
||||
tmpreg:=cg.get_scratch_reg_address(list);
|
||||
cg.a_load_ref_reg(list,OS_ADDR,href,tmpreg);
|
||||
reference_reset_base(href,tmpreg,0);
|
||||
cg.g_initialize(list,tvarsym(p).vartype.def,href,false);
|
||||
@ -1352,7 +1352,7 @@ implementation
|
||||
if (po_virtualmethod in pd.procoptions) then
|
||||
begin
|
||||
reference_reset_base(href,self_pointer_reg,0);
|
||||
tmpreg:=cg.get_scratch_reg(list);
|
||||
tmpreg:=cg.get_scratch_reg_address(list);
|
||||
cg.a_load_ref_reg(list,OS_ADDR,href,tmpreg);
|
||||
reference_reset_base(href,tmpreg,procinfo^._class.vmtmethodoffset(pd.extnumber));
|
||||
cg.free_scratch_reg(list,tmpreg);
|
||||
@ -1607,7 +1607,11 @@ implementation
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.16 2002-05-18 13:34:09 peter
|
||||
Revision 1.17 2002-05-20 13:30:40 carl
|
||||
* bugfix of hdisponen (base must be set, not index)
|
||||
* more portability fixes
|
||||
|
||||
Revision 1.16 2002/05/18 13:34:09 peter
|
||||
* readded missing revisions
|
||||
|
||||
Revision 1.15 2002/05/16 19:46:37 carl
|
||||
|
@ -192,7 +192,7 @@ const
|
||||
reset_reference(ref);
|
||||
ref.base := STACK_POINTER_REG;
|
||||
ref.offset := LinkageAreaSize+para_size_till_now;
|
||||
tmpreg := get_scratch_reg(list);
|
||||
tmpreg := get_scratch_reg_int(list);
|
||||
a_load_ref_reg(list,size,r,tmpreg);
|
||||
a_load_reg_ref(list,size,tmpreg,ref);
|
||||
free_scratch_reg(list,tmpreg);
|
||||
@ -216,7 +216,7 @@ const
|
||||
reset_reference(ref);
|
||||
ref.base := STACK_POINTER_REG;
|
||||
ref.offset := LinkageAreaSize+para_size_till_now;
|
||||
tmpreg := get_scratch_reg(list);
|
||||
tmpreg := get_scratch_reg_address(list);
|
||||
a_loadaddr_ref_reg(list,size,r,tmpreg);
|
||||
a_load_reg_ref(list,size,tmpreg,ref);
|
||||
free_scratch_reg(list,tmpreg);
|
||||
@ -460,7 +460,7 @@ const
|
||||
begin
|
||||
if src <> dst then
|
||||
list.concat(taicpu.op_reg_reg(A_MR,dst,src));
|
||||
scratchreg := get_scratch_reg(list);
|
||||
scratchreg := get_scratch_reg_int(list);
|
||||
list.concat(taicpu.op_reg_const(A_LI,scratchreg,-1));
|
||||
list.concat(taicpu.op_reg_reg_const_const_const(A_RLWIMI,dst,
|
||||
scratchreg,0,l1,l2));
|
||||
@ -492,7 +492,7 @@ const
|
||||
{ perform the operation }
|
||||
if useReg then
|
||||
begin
|
||||
scratchreg := get_scratch_reg(list);
|
||||
scratchreg := get_scratch_reg_int(list);
|
||||
a_load_const_reg(list,OS_32,a,scratchreg);
|
||||
a_op_reg_reg_reg(list,op,OS_32,scratchreg,src,dst);
|
||||
free_scratch_reg(list,scratchreg);
|
||||
@ -535,7 +535,7 @@ const
|
||||
list.concat(taicpu.op_reg_reg_const(A_CMPI,R_CR0,reg,a))
|
||||
else
|
||||
begin
|
||||
scratch_register := get_scratch_reg(list);
|
||||
scratch_register := get_scratch_reg_int(list);
|
||||
a_load_const_reg(list,OS_32,a,scratch_register);
|
||||
list.concat(taicpu.op_reg_reg_reg(A_CMP,R_CR0,reg,scratch_register));
|
||||
free_scratch_reg(list,scratch_register);
|
||||
@ -545,7 +545,7 @@ const
|
||||
list.concat(taicpu.op_reg_reg_const(A_CMPLI,R_CR0,reg,a))
|
||||
else
|
||||
begin
|
||||
scratch_register := get_scratch_reg(list);
|
||||
scratch_register := get_scratch_reg_int(list);
|
||||
a_load_const_reg(list,OS_32,a,scratch_register);
|
||||
list.concat(taicpu.op_reg_reg_reg(A_CMPL,R_CR0,reg,scratch_register));
|
||||
free_scratch_reg(list,scratch_register);
|
||||
@ -841,7 +841,7 @@ const
|
||||
{ add the symbol's value to the base of the reference, and if the }
|
||||
{ reference doesn't have a base, create one }
|
||||
begin
|
||||
tmpreg := get_scratch_reg(list);
|
||||
tmpreg := get_scratch_reg_address(list);
|
||||
reference_reset(tmpref);
|
||||
tmpref.symbol := ref2.symbol;
|
||||
tmpref.symaddr := refs_ha;
|
||||
@ -893,14 +893,14 @@ const
|
||||
reference_reset(src);
|
||||
reference_reset(dst);
|
||||
{ load the address of source into src.base }
|
||||
src.base := get_scratch_reg(list);
|
||||
src.base := get_scratch_reg_address(list);
|
||||
if loadref then
|
||||
a_load_ref_reg(list,OS_32,source,src.base)
|
||||
else a_loadaddr_ref_reg(list,source,src.base);
|
||||
if delsource then
|
||||
reference_release(exprasmlist,source);
|
||||
{ load the address of dest into dst.base }
|
||||
dst.base := get_scratch_reg(list);
|
||||
dst.base := get_scratch_reg_address(list);
|
||||
a_loadaddr_ref_reg(list,dest,dst.base);
|
||||
count := len div 4;
|
||||
if count > 3 then
|
||||
@ -914,7 +914,7 @@ const
|
||||
Inc(src.offset,4);
|
||||
list.concat(taicpu.op_reg_reg_const(A_SUBI,src.base,src.base,4));
|
||||
list.concat(taicpu.op_reg_reg_const(A_SUBI,dst.base,dst.base,4));
|
||||
countreg := get_scratch_reg(list);
|
||||
countreg := get_scratch_reg_int(list);
|
||||
a_load_const_reg(list,OS_32,count-1,countreg);
|
||||
{ explicitely allocate R_0 since it can be used safely here }
|
||||
{ (for holding date that's being copied) }
|
||||
@ -932,7 +932,7 @@ const
|
||||
else
|
||||
{ unrolled loop }
|
||||
begin
|
||||
tempreg := get_scratch_reg(list);
|
||||
tempreg := get_scratch_reg_int(list);
|
||||
for count2 := 1 to count do
|
||||
begin
|
||||
a_load_ref_reg(list,OS_32,src,tempreg);
|
||||
@ -1137,7 +1137,7 @@ const
|
||||
begin
|
||||
if assigned(ref.symbol) then
|
||||
begin
|
||||
tmpreg := get_scratch_reg(list);
|
||||
tmpreg := get_scratch_reg_address(list);
|
||||
reference_reset(tmpref);
|
||||
tmpref.symbol := ref.symbol;
|
||||
tmpref.symaddr := refs_ha;
|
||||
@ -1173,7 +1173,11 @@ begin
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.18 2002-05-18 13:34:26 peter
|
||||
Revision 1.19 2002-05-20 13:30:41 carl
|
||||
* bugfix of hdisponen (base must be set, not index)
|
||||
* more portability fixes
|
||||
|
||||
Revision 1.18 2002/05/18 13:34:26 peter
|
||||
* readded missing revisions
|
||||
|
||||
Revision 1.17 2002/05/16 19:46:53 carl
|
||||
|
@ -278,13 +278,13 @@ implementation
|
||||
begin
|
||||
leftreg := left.location.register;
|
||||
if signed then
|
||||
valuereg := cg.get_scratch_reg(exprasmlist)
|
||||
valuereg := cg.get_scratch_reg_int(exprasmlist)
|
||||
else
|
||||
valuereg := leftreg;
|
||||
end;
|
||||
LOC_REFERENCE,LOC_CREFERENCE:
|
||||
begin
|
||||
leftreg := cg.get_scratch_reg(exprasmlist);
|
||||
leftreg := cg.get_scratch_reg_int(exprasmlist);
|
||||
valuereg := leftreg;
|
||||
cg.a_load_ref_reg(exprasmlist,def_cgsize(left.resulttype.def),
|
||||
left.location.reference,leftreg);
|
||||
@ -292,7 +292,7 @@ implementation
|
||||
else
|
||||
internalerror(200110012);
|
||||
end;
|
||||
tempreg := cg.get_scratch_reg(exprasmlist);
|
||||
tempreg := cg.get_scratch_reg_int(exprasmlist);
|
||||
exprasmlist.concat(taicpu.op_reg_const(A_LIS,tempreg,$4330));
|
||||
cg.a_load_reg_ref(exprasmlist,OS_32,tempreg,ref);
|
||||
if signed then
|
||||
@ -456,7 +456,11 @@ begin
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.8 2002-05-18 13:34:26 peter
|
||||
Revision 1.9 2002-05-20 13:30:42 carl
|
||||
* bugfix of hdisponen (base must be set, not index)
|
||||
* more portability fixes
|
||||
|
||||
Revision 1.8 2002/05/18 13:34:26 peter
|
||||
* readded missing revisions
|
||||
|
||||
Revision 1.7 2002/05/16 19:46:53 carl
|
||||
|
@ -129,7 +129,7 @@ implementation
|
||||
divider := right.location.register;
|
||||
LOC_REFERENCE, LOC_CREFERENCE:
|
||||
begin
|
||||
divider := cg.get_scratch_reg(exprasmlist);
|
||||
divider := cg.get_scratch_reg_int(exprasmlist);
|
||||
cg.a_load_ref_reg(exprasmlist,OS_32,
|
||||
right.location.reference,divider);
|
||||
reference_release(exprasmlist,right.location.reference);
|
||||
@ -266,7 +266,7 @@ implementation
|
||||
end;
|
||||
LOC_REFERENCE,LOC_CREFERENCE:
|
||||
begin
|
||||
hregister1 := cg.get_scratch_reg(exprasmlist);
|
||||
hregister1 := cg.get_scratch_reg_int(exprasmlist);
|
||||
cg.a_load_ref_reg(exprasmlist,OS_S32,
|
||||
right.location.reference,hregister1);
|
||||
end;
|
||||
@ -350,7 +350,7 @@ implementation
|
||||
hregister2 := right.location.register;
|
||||
LOC_REFERENCE, LOC_CREFERENCE:
|
||||
begin
|
||||
hregister2 := cg.get_scratch_reg(exprasmlist);
|
||||
hregister2 := cg.get_scratch_reg_int(exprasmlist);
|
||||
cg.a_load_ref_reg(exprasmlist,OS_32,
|
||||
right.location.reference,hregister2);
|
||||
reference_release(exprasmlist,right.location.reference);
|
||||
@ -391,7 +391,7 @@ implementation
|
||||
exprasmlist.concat(taicpu.op_reg_reg(A_NEG,location.registerlow,
|
||||
src1));
|
||||
cg.a_op_reg_reg(exprasmlist,OP_NOT,OS_32,src2,location.registerhigh);
|
||||
tmp := cg.get_scratch_reg(exprasmlist);
|
||||
tmp := cg.get_scratch_reg_int(exprasmlist);
|
||||
cg.a_op_const_reg_reg(exprasmlist,OP_SAR,OS_32,31,location.registerlow,
|
||||
tmp);
|
||||
if not(cs_check_overflow in aktlocalswitches) then
|
||||
@ -547,7 +547,11 @@ begin
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.9 2002-05-18 13:34:26 peter
|
||||
Revision 1.10 2002-05-20 13:30:42 carl
|
||||
* bugfix of hdisponen (base must be set, not index)
|
||||
* more portability fixes
|
||||
|
||||
Revision 1.9 2002/05/18 13:34:26 peter
|
||||
* readded missing revisions
|
||||
|
||||
Revision 1.8 2002/05/16 19:46:53 carl
|
||||
|
Loading…
Reference in New Issue
Block a user