* changeregsize -> rg.makeregsize

This commit is contained in:
carl 2002-04-21 15:29:53 +00:00
parent af40eb97ca
commit fb605f11b0
12 changed files with 128 additions and 93 deletions

View File

@ -207,7 +207,7 @@ implementation
function def_getreg(p1:tdef):tregister;
begin
def_getreg:=changeregsize(rg.getregisterint(exprasmlist),def_opsize(p1));
def_getreg:=rg.makeregsize(rg.getregisterint(exprasmlist),int_cgsize(p1.size));
end;
@ -357,9 +357,9 @@ implementation
LOC_REGISTER,
LOC_CREGISTER : begin
if aktalignment.paraalign=4 then
exprasmList.concat(Taicpu.Op_reg(A_PUSH,S_L,changeregsize(t.register,S_L)))
exprasmList.concat(Taicpu.Op_reg(A_PUSH,S_L,rg.makeregsize(t.register,OS_32)))
else
exprasmList.concat(Taicpu.Op_reg(A_PUSH,S_W,changeregsize(t.register,S_W)));
exprasmList.concat(Taicpu.Op_reg(A_PUSH,S_W,rg.makeregsize(t.register,OS_16)));
end;
LOC_CONSTANT : begin
if aktalignment.paraalign=4 then
@ -655,10 +655,10 @@ implementation
begin
{ and now look for an 8 bit register }
swap:=false;
if R_EAX in rg.unusedregsint then reg8:=changeregsize(rg.getexplicitregisterint(exprasmlist,R_EAX),S_B)
else if R_EDX in rg.unusedregsint then reg8:=changeregsize(rg.getexplicitregisterint(exprasmlist,R_EDX),S_B)
else if R_EBX in rg.unusedregsint then reg8:=changeregsize(rg.getexplicitregisterint(exprasmlist,R_EBX),S_B)
else if R_ECX in rg.unusedregsint then reg8:=changeregsize(rg.getexplicitregisterint(exprasmlist,R_ECX),S_B)
if R_EAX in rg.unusedregsint then reg8:=rg.makeregsize(rg.getexplicitregisterint(exprasmlist,R_EAX),OS_8)
else if R_EDX in rg.unusedregsint then reg8:=rg.makeregsize(rg.getexplicitregisterint(exprasmlist,R_EDX),OS_8)
else if R_EBX in rg.unusedregsint then reg8:=rg.makeregsize(rg.getexplicitregisterint(exprasmlist,R_EBX),OS_8)
else if R_ECX in rg.unusedregsint then reg8:=rg.makeregsize(rg.getexplicitregisterint(exprasmlist,R_ECX),OS_8)
else
begin
swap:=true;
@ -2301,7 +2301,10 @@ implementation
end.
{
$Log$
Revision 1.25 2002-04-20 21:37:07 carl
Revision 1.26 2002-04-21 15:29:53 carl
* changeregsize -> rg.makeregsize
Revision 1.25 2002/04/20 21:37:07 carl
+ generic FPC_CHECKPOINTER
+ first parameter offset in stack now portable
* rename some constants

View File

@ -822,11 +822,11 @@ begin
if reg = newReg then
reg := orgReg
else if (reg in regset8bit) and
(reg = Changeregsize(newReg,S_B)) then
reg := Changeregsize(orgReg,S_B)
(reg = rg.makeregsize(newReg,OS_8)) then
reg := rg.makeregsize(orgReg,OS_8)
else if (reg in regset16bit) and
(reg = Changeregsize(newReg,S_W)) then
reg := Changeregsize(orgReg,S_W)
(reg = rg.makeregsize(newReg,OS_16)) then
reg := rg.makeregsize(orgReg,OS_16)
else
changeReg := false;
end;
@ -1385,9 +1385,9 @@ begin
begin
case t.opsize of
S_B,S_BW,S_BL:
memtoreg := Changeregsize(regcounter,S_B);
memtoreg := rg.makeregsize(regcounter,OS_8);
S_W,S_WL:
memtoreg := Changeregsize(regcounter,S_W);
memtoreg := rg.makeregsize(regcounter,OS_16);
S_L:
memtoreg := regcounter;
end;
@ -1984,7 +1984,10 @@ End.
{
$Log$
Revision 1.31 2002-04-20 21:37:07 carl
Revision 1.32 2002-04-21 15:32:59 carl
* changeregsize -> rg.makeregsize
Revision 1.31 2002/04/20 21:37:07 carl
+ generic FPC_CHECKPOINTER
+ first parameter offset in stack now portable
* rename some constants

View File

@ -226,7 +226,8 @@ Var
Implementation
Uses
globals, systems, verbose, cgbase, symconst, symsym, tainst, cginfo, rgobj;
globals, systems, verbose, cgbase, symconst, symsym, tainst, cginfo, cgobj,
rgobj;
Type
TRefCompare = function(const r1, r2: TReference): Boolean;
@ -586,10 +587,10 @@ Begin
If (Reg >= R_AX)
Then
If (Reg <= R_DI)
Then Reg32 := ChangeRegsize(Reg,S_L)
Then Reg32 := rg.makeregsize(Reg,OS_INT)
Else
If (Reg <= R_BL)
Then Reg32 := ChangeRegsize(Reg,S_L);
Then Reg32 := rg.makeregsize(Reg,OS_INT);
End;
{ inserts new_one between prev and foll }
@ -641,37 +642,37 @@ Begin
Case OldReg Of
R_EAX..R_EDI:
Begin
NewRegsEncountered := NewRegsEncountered + [ChangeRegsize(NewReg,S_W)];
OldRegsEncountered := OldRegsEncountered + [ChangeRegsize(OldReg,S_W)];
New2OldReg[Changeregsize(NewReg,S_W)] := Changeregsize(OldReg,S_W);
NewRegsEncountered := NewRegsEncountered + [rg.makeregsize(NewReg,OS_16)];
OldRegsEncountered := OldRegsEncountered + [rg.makeregsize(OldReg,OS_16)];
New2OldReg[rg.makeregsize(NewReg,OS_16)] := rg.makeregsize(OldReg,OS_16);
If (NewReg in [R_EAX..R_EBX]) And
(OldReg in [R_EAX..R_EBX]) Then
Begin
NewRegsEncountered := NewRegsEncountered + [Changeregsize(NewReg,S_B)];
OldRegsEncountered := OldRegsEncountered + [Changeregsize(OldReg,S_B)];
New2OldReg[Changeregsize(NewReg,S_B)] := Changeregsize(OldReg,S_B);
NewRegsEncountered := NewRegsEncountered + [rg.makeregsize(NewReg,OS_8)];
OldRegsEncountered := OldRegsEncountered + [rg.makeregsize(OldReg,OS_8)];
New2OldReg[rg.makeregsize(NewReg,OS_8)] := rg.makeregsize(OldReg,OS_8);
End;
End;
R_AX..R_DI:
Begin
NewRegsEncountered := NewRegsEncountered + [Changeregsize(NewReg,S_L)];
OldRegsEncountered := OldRegsEncountered + [Changeregsize(OldReg,S_L)];
New2OldReg[Changeregsize(NewReg,S_L)] := Changeregsize(OldReg,S_L);
NewRegsEncountered := NewRegsEncountered + [rg.makeregsize(NewReg,OS_32)];
OldRegsEncountered := OldRegsEncountered + [rg.makeregsize(OldReg,OS_32)];
New2OldReg[rg.makeregsize(NewReg,OS_32)] := rg.makeregsize(OldReg,OS_32);
If (NewReg in [R_AX..R_BX]) And
(OldReg in [R_AX..R_BX]) Then
Begin
NewRegsEncountered := NewRegsEncountered + [Changeregsize(NewReg,S_B)];
OldRegsEncountered := OldRegsEncountered + [Changeregsize(OldReg,S_B)];
New2OldReg[Changeregsize(NewReg,S_B)] := Changeregsize(OldReg,S_B);
NewRegsEncountered := NewRegsEncountered + [rg.makeregsize(NewReg,OS_8)];
OldRegsEncountered := OldRegsEncountered + [rg.makeregsize(OldReg,OS_8)];
New2OldReg[rg.makeregsize(NewReg,OS_8)] := rg.makeregsize(OldReg,OS_8);
End;
End;
R_AL..R_BL:
Begin
NewRegsEncountered := NewRegsEncountered + [Changeregsize(NewReg,S_L)]
+ [Changeregsize(NewReg,S_W)];
OldRegsEncountered := OldRegsEncountered + [Changeregsize(OldReg,S_L)]
+ [Changeregsize(OldReg,S_B)];
New2OldReg[Changeregsize(NewReg,S_L)] := Changeregsize(OldReg,S_L);
NewRegsEncountered := NewRegsEncountered + [rg.makeregsize(NewReg,OS_32)]
+ [rg.makeregsize(NewReg,OS_16)];
OldRegsEncountered := OldRegsEncountered + [rg.makeregsize(OldReg,OS_32)]
+ [rg.makeregsize(OldReg,OS_8)];
New2OldReg[rg.makeregsize(NewReg,OS_32)] := rg.makeregsize(OldReg,OS_32);
End;
End;
End;
@ -2586,7 +2587,10 @@ End.
{
$Log$
Revision 1.32 2002-04-20 21:37:07 carl
Revision 1.33 2002-04-21 15:32:59 carl
* changeregsize -> rg.makeregsize
Revision 1.32 2002/04/20 21:37:07 carl
+ generic FPC_CHECKPOINTER
+ first parameter offset in stack now portable
* rename some constants

View File

@ -1204,8 +1204,8 @@ implementation
else
begin
location.register:=rg.getexplicitregisterint(exprasmlist,accumulator);
hregister:=changeregsize(accumulator,TCGSize2Opsize[cgsize]);
location.register:=changeregsize(location.register,TCGSize2Opsize[cgsize]);
hregister:=rg.makeregsize(accumulator,cgsize);
location.register:=rg.makeregsize(location.register,cgsize);
cg.a_load_reg_reg(exprasmlist,cgsize,hregister,location.register);
end;
end;
@ -1343,7 +1343,7 @@ implementation
for i := 1 to maxvarregs do
if assigned(regvars[i]) then
begin
tmpreg:=changeregsize(regvars[i].reg,S_L);
tmpreg:=rg.makeregsize(regvars[i].reg,OS_INT);
rg.makeregvar(tmpreg);
end;
end;
@ -1477,7 +1477,10 @@ begin
end.
{
$Log$
Revision 1.45 2002-04-15 19:44:21 peter
Revision 1.46 2002-04-21 15:34:25 carl
* changeregsize -> rg.makeregsize
Revision 1.45 2002/04/15 19:44:21 peter
* fixed stackcheck that would be called recursively when a stack
error was found
* generic changeregsize(reg,size) for i386 register resizing

View File

@ -257,7 +257,7 @@ implementation
getlabel(hlabel);
cg.a_label(exprasmlist,truelabel);
cg.a_load_const_reg(exprasmlist,OS_INT,1,hregister);
cg.a_jmp_cond(exprasmlist,OC_NONE,hlabel);
cg.a_jmp_always(exprasmlist,hlabel);
cg.a_label(exprasmlist,falselabel);
cg.a_load_const_reg(exprasmlist,OS_INT,0,hregister);
cg.a_label(exprasmlist,hlabel);
@ -364,7 +364,10 @@ begin
end.
{
$Log$
Revision 1.35 2002-04-19 15:39:35 peter
Revision 1.36 2002-04-21 15:35:23 carl
* changeregsize -> rg.makeregsize
Revision 1.35 2002/04/19 15:39:35 peter
* removed some more routines from cga
* moved location_force_reg/mem to ncgutil
* moved arrayconstructnode secondpass to ncgld

View File

@ -467,7 +467,7 @@ implementation
{ need a cmp and jmp, but this should be done by the }
{ type cast code which does range checking if necessary (FK) }
begin
hregister := changeregsize(tcallparanode(tcallparanode(left).right).left.location.register,S_L);
hregister := rg.makeregsize(tcallparanode(tcallparanode(left).right).left.location.register,OS_INT);
end
else
begin
@ -591,7 +591,10 @@ begin
end.
{
$Log$
Revision 1.37 2002-04-19 15:39:35 peter
Revision 1.38 2002-04-21 15:35:54 carl
* changeregsize -> rg.makeregsize
Revision 1.37 2002/04/19 15:39:35 peter
* removed some more routines from cga
* moved location_force_reg/mem to ncgutil
* moved arrayconstructnode secondpass to ncgld

View File

@ -149,13 +149,13 @@ implementation
location.register:=tvarsym(symtableentry).reg;
end
else
if not(changeregsize(tvarsym(symtableentry).reg,S_L) in [R_EAX..R_EBX]) or
rg.regvar_loaded[changeregsize(tvarsym(symtableentry).reg,S_L)] then
if not(rg.makeregsize(tvarsym(symtableentry).reg,OS_INT) in [R_EAX..R_EBX]) or
rg.regvar_loaded[rg.makeregsize(tvarsym(symtableentry).reg,OS_INT)] then
begin
location_reset(location,LOC_CREGISTER,
cg.reg_cgsize(tvarsym(symtableentry).reg));
location.register:=tvarsym(symtableentry).reg;
exclude(rg.unusedregsint,changeregsize(tvarsym(symtableentry).reg,S_L));
exclude(rg.unusedregsint,rg.makeregsize(tvarsym(symtableentry).reg,OS_INT));
end
else
begin
@ -163,7 +163,7 @@ implementation
location_reset(location,LOC_CREGISTER,
cg.reg_cgsize(tvarsym(symtableentry).reg));
location.register:=tvarsym(symtableentry).reg;
exclude(rg.unusedregsint,changeregsize(tvarsym(symtableentry).reg,S_L));
exclude(rg.unusedregsint,rg.makeregsize(tvarsym(symtableentry).reg,OS_INT));
end
end
else
@ -777,7 +777,10 @@ begin
end.
{
$Log$
Revision 1.36 2002-04-19 15:39:35 peter
Revision 1.37 2002-04-21 15:36:13 carl
* changeregsize -> rg.makeregsize
Revision 1.36 2002/04/19 15:39:35 peter
* removed some more routines from cga
* moved location_force_reg/mem to ncgutil
* moved arrayconstructnode secondpass to ncgld

View File

@ -41,7 +41,7 @@ type
implementation
uses pass_1, types, htypechk, cgbase, cpubase, cga,
uses pass_1, types, htypechk, cginfo, cgbase, cpubase, cga,
tgobj, aasm, ncnv, ncon, pass_2, symdef, rgobj;
@ -117,7 +117,7 @@ begin
{ free the registers of right }
reference_release(exprasmlist,right.location.reference);
{ get register for the char }
hreg := changeregsize(rg.getregisterint(exprasmlist),S_B);
hreg := rg.makeregsize(rg.getregisterint(exprasmlist),OS_8);
emit_ref_reg(A_MOV,S_B,right.location.reference,hreg);
{ I don't think a temp char exists, but it won't hurt (JM) }
tg.ungetiftemp(exprasmlist,right.location.reference);
@ -181,8 +181,8 @@ begin
else
emit_const_ref(A_MOV,S_B,tordconstnode(right).value,href2);
{ increase the string length }
emit_reg(A_INC,S_B,changeregsize(lengthreg,S_B));
emit_reg_ref(A_MOV,S_B,changeregsize(lengthreg,S_B),left.location.reference);
emit_reg(A_INC,S_B,rg.makeregsize(lengthreg,OS_8));
emit_reg_ref(A_MOV,S_B,rg.makeregsize(lengthreg,OS_8),left.location.reference);
rg.ungetregisterint(exprasmlist,lengthreg);
if checklength then
emitlab(l);
@ -242,7 +242,10 @@ end.
{
$Log$
Revision 1.10 2002-04-15 19:44:21 peter
Revision 1.11 2002-04-21 15:36:40 carl
* changeregsize -> rg.makeregsize
Revision 1.10 2002/04/15 19:44:21 peter
* fixed stackcheck that would be called recursively when a stack
error was found
* generic changeregsize(reg,size) for i386 register resizing

View File

@ -220,7 +220,7 @@ implementation
{ use the register as base in a reference (JM) }
if ranges then
begin
pleftreg:=changeregsize(left.location.register,S_L);
pleftreg:=rg.makeregsize(left.location.register,OS_INT);
cg.a_load_reg_reg(exprasmlist,left.location.size,left.location.register,pleftreg);
if opsize <> S_L then
emit_const_reg(A_AND,S_L,255,pleftreg);
@ -230,7 +230,7 @@ implementation
{ otherwise simply use the lower 8 bits (no "and" }
{ necessary this way) (JM) }
begin
pleftreg:=changeregsize(left.location.register,S_B);
pleftreg:=rg.makeregsize(left.location.register,OS_8);
opsize := S_B;
end;
end
@ -382,7 +382,7 @@ implementation
LOC_REGISTER,
LOC_CREGISTER:
begin
hr:=changeregsize(left.location.register,S_L);
hr:=rg.makeregsize(left.location.register,OS_INT);
cg.a_load_reg_reg(exprasmlist,left.location.size,left.location.register,hr);
end;
else
@ -451,7 +451,7 @@ implementation
LOC_REGISTER,
LOC_CREGISTER:
begin
hr:=changeregsize(left.location.register,S_L);
hr:=rg.makeregsize(left.location.register,OS_INT);
cg.a_load_reg_reg(exprasmlist,left.location.size,left.location.register,hr);
emit_const_reg(A_CMP,S_L,31,hr);
emitjmp(C_NA,l);
@ -523,7 +523,7 @@ implementation
end
else
begin
pleftreg := changeregsize(left.location.register,S_L);
pleftreg := rg.makeregsize(left.location.register,OS_INT);
opsize := def2def_opsize(left.resulttype.def,u32bittype.def);
if opsize <> S_L then
begin
@ -817,21 +817,21 @@ implementation
begin
if with_sign then
emit_reg_reg(A_MOVSX,S_WL,hregister,
changeregsize(hregister,S_L))
rg.makeregsize(hregister,OS_INT))
else
emit_reg_reg(A_MOVZX,S_WL,hregister,
changeregsize(hregister,S_L));
hregister:=changeregsize(hregister,S_L);
rg.makeregsize(hregister,OS_INT));
hregister:=rg.makeregsize(hregister,OS_INT);
end
else if opsize=S_B then
begin
if with_sign then
emit_reg_reg(A_MOVSX,S_BL,hregister,
changeregsize(hregister,S_L))
rg.makeregsize(hregister,OS_INT))
else
emit_reg_reg(A_MOVZX,S_BL,hregister,
changeregsize(hregister,S_L));
hregister:=changeregsize(hregister,S_L);
rg.makeregsize(hregister,OS_INT));
hregister:=rg.makeregsize(hregister,OS_INT);
end;
reference_reset_symbol(href,table,0);
href.offset:=(-longint(min_))*4;
@ -1030,7 +1030,10 @@ begin
end.
{
$Log$
Revision 1.23 2002-04-19 15:39:35 peter
Revision 1.24 2002-04-21 15:37:26 carl
* changeregsize -> rg.makeregsize
Revision 1.23 2002/04/19 15:39:35 peter
* removed some more routines from cga
* moved location_force_reg/mem to ncgutil
* moved arrayconstructnode secondpass to ncgld

View File

@ -319,9 +319,9 @@ implementation
LOC_CREGISTER :
begin
if aktalignment.paraalign=4 then
exprasmList.concat(Taicpu.Op_reg(A_PUSH,S_L,changeregsize(p.location.register,S_W)))
exprasmList.concat(Taicpu.Op_reg(A_PUSH,S_L,rg.makeregsize(p.location.register,OS_16)))
else
exprasmList.concat(Taicpu.Op_reg(A_PUSH,S_W,changeregsize(p.location.register,S_L)));
exprasmList.concat(Taicpu.Op_reg(A_PUSH,S_W,rg.makeregsize(p.location.register,OS_32)));
rg.ungetregisterint(exprasmlist,p.location.register);
end;
else
@ -382,9 +382,7 @@ implementation
cgsize:=OS_32;
end;
end;
{$ifdef i386}
p.location.register:=changeregsize(p.location.register,TCGSize2Opsize[cgsize]);
{$endif i386}
p.location.register:=rg.makeregsize(p.location.register,cgsize);
inc(pushedparasize,alignment);
if inlined then
begin
@ -936,7 +934,7 @@ implementation
href := dest.location.reference;
emit_const_ref(A_MOV,S_B,1,href);
inc(href.offset,1);
emit_reg_ref(A_MOV,S_B,changeregsize(source.location.register,S_B),href);
emit_reg_ref(A_MOV,S_B,rg.makeregsize(source.location.register,OS_8),href);
end
else
{ not so elegant (goes better with extra register }
@ -1112,7 +1110,10 @@ implementation
end.
{
$Log$
Revision 1.33 2002-04-20 21:37:07 carl
Revision 1.34 2002-04-21 15:39:41 carl
* changeregsize -> rg.makeregsize
Revision 1.33 2002/04/20 21:37:07 carl
+ generic FPC_CHECKPOINTER
+ first parameter offset in stack now portable
* rename some constants

View File

@ -1213,7 +1213,7 @@ Begin
Case Taicpu(p).opsize of
S_BW:
Begin
If (Taicpu(p).oper[0].reg = Changeregsize(Taicpu(p).oper[1].reg,S_B)) And
If (Taicpu(p).oper[0].reg = rg.makeregsize(Taicpu(p).oper[1].reg,OS_8)) And
Not(CS_LittleSize In aktglobalswitches)
Then
{Change "movzbw %al, %ax" to "andw $0x0ffh, %ax"}
@ -1235,13 +1235,13 @@ Begin
Begin
Taicpu(p).opcode := A_MOV;
Taicpu(p).changeopsize(S_W);
Taicpu(p).LoadReg(0,Changeregsize(Taicpu(p).oper[0].reg,S_W));
Taicpu(p).LoadReg(0,rg.makeregsize(Taicpu(p).oper[0].reg,OS_16));
Taicpu(hp1).LoadConst(0,Taicpu(hp1).oper[0].val And $ff);
End;
End;
S_BL:
Begin
If (Taicpu(p).oper[0].reg = Changeregsize(Taicpu(p).oper[1].reg,S_B)) And
If (Taicpu(p).oper[0].reg = rg.makeregsize(Taicpu(p).oper[1].reg,OS_8)) And
Not(CS_LittleSize in aktglobalswitches)
Then
{Change "movzbl %al, %eax" to "andl $0x0ffh, %eax"}
@ -1263,13 +1263,13 @@ Begin
Begin
Taicpu(p).opcode := A_MOV;
Taicpu(p).changeopsize(S_L);
Taicpu(p).LoadReg(0,Changeregsize(Taicpu(p).oper[0].reg,S_L));
Taicpu(p).LoadReg(0,rg.makeregsize(Taicpu(p).oper[0].reg,OS_32));
Taicpu(hp1).LoadConst(0,Taicpu(hp1).oper[0].val And $ff);
End
End;
S_WL:
Begin
If (Taicpu(p).oper[0].reg = Changeregsize(Taicpu(p).oper[1].reg,S_W)) And
If (Taicpu(p).oper[0].reg = rg.makeregsize(Taicpu(p).oper[1].reg,OS_16)) And
Not(CS_LittleSize In aktglobalswitches)
Then
{Change "movzwl %ax, %eax" to "andl $0x0ffffh, %eax"}
@ -1291,7 +1291,7 @@ Begin
Begin
Taicpu(p).opcode := A_MOV;
Taicpu(p).changeopsize(S_L);
Taicpu(p).LoadReg(0,Changeregsize(Taicpu(p).oper[0].reg,S_L));
Taicpu(p).LoadReg(0,rg.makeregsize(Taicpu(p).oper[0].reg,OS_32));
Taicpu(hp1).LoadConst(0,Taicpu(hp1).oper[0].val And $ffff);
End;
End;
@ -1596,7 +1596,7 @@ Begin
Begin
Taicpu(hp1).changeopsize(S_L);
if Taicpu(hp1).oper[0].typ=top_reg then
Taicpu(hp1).LoadReg(0,Changeregsize(Taicpu(hp1).oper[0].reg,S_L));
Taicpu(hp1).LoadReg(0,rg.makeregsize(Taicpu(hp1).oper[0].reg,OS_32));
hp1 := Tai(p.next);
asml.Remove(p);
p.free;
@ -1955,7 +1955,7 @@ Begin
InsertLLItem(AsmL,p.previous, p, hp1);
Taicpu(p).opcode := A_MOV;
Taicpu(p).changeopsize(S_B);
Taicpu(p).LoadReg(1,Changeregsize(Taicpu(p).oper[1].reg,S_B));
Taicpu(p).LoadReg(1,rg.makeregsize(Taicpu(p).oper[1].reg,OS_8));
End;
End;
End
@ -1975,7 +1975,7 @@ Begin
Taicpu(p).oper[1].reg);
Taicpu(p).opcode := A_MOV;
Taicpu(p).changeopsize(S_B);
Taicpu(p).LoadReg(1,Changeregsize(Taicpu(p).oper[1].reg,S_B));
Taicpu(p).LoadReg(1,rg.makeregsize(Taicpu(p).oper[1].reg,OS_8));
InsertLLItem(AsmL,p.previous, p, hp1);
End;
End;
@ -2040,7 +2040,10 @@ End.
{
$Log$
Revision 1.22 2002-04-20 21:37:07 carl
Revision 1.23 2002-04-21 15:40:49 carl
* changeregsize -> rg.makeregsize
Revision 1.22 2002/04/20 21:37:07 carl
+ generic FPC_CHECKPOINTER
+ first parameter offset in stack now portable
* rename some constants
@ -2053,7 +2056,7 @@ End.
Revision 1.21 2002/04/15 19:44:21 peter
* fixed stackcheck that would be called recursively when a stack
error was found
* generic changeregsize(reg,size) for i386 register resizing
* generic rg.makeregsize(reg,size) for i386 register resizing
* removed some more routines from cga unit
* fixed returnvalue handling
* fixed default stacksize of linux and go32v2, 8kb was a bit small :-)

View File

@ -81,17 +81,17 @@ begin
reg := reg1
else if (reg in regset8bit) then
begin
if (reg = Changeregsize(reg1,S_B)) then
reg := Changeregsize(reg2,S_B)
else if reg = Changeregsize(reg2,S_B) then
reg := Changeregsize(reg1,S_B);
if (reg = rg.makeregsize(reg1,OS_8)) then
reg := rg.makeregsize(reg2,OS_8)
else if reg = rg.makeregsize(reg2,OS_8) then
reg := rg.makeregsize(reg1,OS_8);
end
else if (reg in regset16bit) then
begin
if reg = Changeregsize(reg1,S_W) then
reg := Changeregsize(reg2,S_W)
else if reg = Changeregsize(reg2,S_W) then
reg := Changeregsize(reg1,S_W);
if reg = rg.makeregsize(reg1,OS_16) then
reg := rg.makeregsize(reg2,OS_16)
else if reg = rg.makeregsize(reg2,OS_16) then
reg := rg.makeregsize(reg1,OS_16);
end;
end;
@ -350,7 +350,10 @@ End.
{
$Log$
Revision 1.12 2002-04-20 21:37:08 carl
Revision 1.13 2002-04-21 15:42:17 carl
* changeregsize -> rg.makeregsize
Revision 1.12 2002/04/20 21:37:08 carl
+ generic FPC_CHECKPOINTER
+ first parameter offset in stack now portable
* rename some constants