mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-21 13:09:32 +02:00
* Converted some code in cgx86.pas to new register numbering
This commit is contained in:
parent
6432af8a76
commit
7b2fd10fb4
@ -1715,6 +1715,7 @@ uses
|
||||
|
||||
var p:Tai;
|
||||
i:shortint;
|
||||
r:Preference;
|
||||
|
||||
begin
|
||||
p:=Tai(first);
|
||||
@ -1727,7 +1728,16 @@ uses
|
||||
begin
|
||||
for i:=0 to Taicpu_abstract(p).ops-1 do
|
||||
if Taicpu_abstract(p).oper[i].typ=Top_reg then
|
||||
convert_register_to_enum(Taicpu_abstract(p).oper[i].reg);
|
||||
convert_register_to_enum(Taicpu_abstract(p).oper[i].reg)
|
||||
else if Taicpu_abstract(p).oper[i].typ=Top_ref then
|
||||
begin
|
||||
r:=Taicpu_abstract(p).oper[i].ref;
|
||||
{$ifdef i386}
|
||||
convert_register_to_enum(r^.segment);
|
||||
{$endif i386}
|
||||
convert_register_to_enum(r^.base);
|
||||
convert_register_to_enum(r^.index);
|
||||
end;
|
||||
{$ifdef i386}
|
||||
convert_register_to_enum(Taicpu_abstract(p).segprefix);
|
||||
{$endif}
|
||||
@ -1740,7 +1750,10 @@ uses
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.17 2003-01-09 15:49:56 daniel
|
||||
Revision 1.18 2003-01-09 20:40:59 daniel
|
||||
* Converted some code in cgx86.pas to new register numbering
|
||||
|
||||
Revision 1.17 2003/01/09 15:49:56 daniel
|
||||
* Added register conversion
|
||||
|
||||
Revision 1.16 2003/01/08 18:43:56 daniel
|
||||
|
@ -395,8 +395,6 @@ implementation
|
||||
inherited create(op);
|
||||
init(_size);
|
||||
ops:=1;
|
||||
if _op1.enum>lastreg then
|
||||
internalerror(200301081);
|
||||
loadreg(0,_op1);
|
||||
end;
|
||||
|
||||
@ -424,10 +422,6 @@ implementation
|
||||
inherited create(op);
|
||||
init(_size);
|
||||
ops:=2;
|
||||
if _op1.enum>lastreg then
|
||||
internalerror(200301081);
|
||||
if _op2.enum>lastreg then
|
||||
internalerror(200301081);
|
||||
loadreg(0,_op1);
|
||||
loadreg(1,_op2);
|
||||
end;
|
||||
@ -438,8 +432,6 @@ implementation
|
||||
inherited create(op);
|
||||
init(_size);
|
||||
ops:=2;
|
||||
if _op1.enum>lastreg then
|
||||
internalerror(200301081);
|
||||
loadreg(0,_op1);
|
||||
loadconst(1,_op2);
|
||||
end;
|
||||
@ -450,8 +442,6 @@ implementation
|
||||
inherited create(op);
|
||||
init(_size);
|
||||
ops:=2;
|
||||
if _op1.enum>lastreg then
|
||||
internalerror(200301081);
|
||||
loadreg(0,_op1);
|
||||
loadref(1,_op2);
|
||||
end;
|
||||
@ -462,8 +452,6 @@ implementation
|
||||
inherited create(op);
|
||||
init(_size);
|
||||
ops:=2;
|
||||
if _op2.enum>lastreg then
|
||||
internalerror(200301081);
|
||||
loadconst(0,_op1);
|
||||
loadreg(1,_op2);
|
||||
end;
|
||||
@ -494,8 +482,6 @@ implementation
|
||||
inherited create(op);
|
||||
init(_size);
|
||||
ops:=2;
|
||||
if _op2.enum>lastreg then
|
||||
internalerror(200301081);
|
||||
loadref(0,_op1);
|
||||
loadreg(1,_op2);
|
||||
end;
|
||||
@ -506,12 +492,6 @@ implementation
|
||||
inherited create(op);
|
||||
init(_size);
|
||||
ops:=3;
|
||||
if _op1.enum>lastreg then
|
||||
internalerror(200301081);
|
||||
if _op2.enum>lastreg then
|
||||
internalerror(200301081);
|
||||
if _op3.enum>lastreg then
|
||||
internalerror(200301081);
|
||||
loadreg(0,_op1);
|
||||
loadreg(1,_op2);
|
||||
loadreg(2,_op3);
|
||||
@ -523,10 +503,6 @@ implementation
|
||||
inherited create(op);
|
||||
init(_size);
|
||||
ops:=3;
|
||||
if _op2.enum>lastreg then
|
||||
internalerror(200301081);
|
||||
if _op3.enum>lastreg then
|
||||
internalerror(200301081);
|
||||
loadconst(0,_op1);
|
||||
loadreg(1,_op2);
|
||||
loadreg(2,_op3);
|
||||
@ -538,10 +514,6 @@ implementation
|
||||
inherited create(op);
|
||||
init(_size);
|
||||
ops:=3;
|
||||
if _op1.enum>lastreg then
|
||||
internalerror(200301081);
|
||||
if _op2.enum>lastreg then
|
||||
internalerror(200301081);
|
||||
loadreg(0,_op1);
|
||||
loadreg(1,_op2);
|
||||
loadref(2,_op3);
|
||||
@ -555,8 +527,6 @@ implementation
|
||||
ops:=3;
|
||||
loadconst(0,_op1);
|
||||
loadref(1,_op2);
|
||||
if _op3.enum>lastreg then
|
||||
internalerror(200301081);
|
||||
loadreg(2,_op3);
|
||||
end;
|
||||
|
||||
@ -567,8 +537,6 @@ implementation
|
||||
init(_size);
|
||||
ops:=3;
|
||||
loadconst(0,_op1);
|
||||
if _op2.enum>lastreg then
|
||||
internalerror(200301081);
|
||||
loadreg(1,_op2);
|
||||
loadref(2,_op3);
|
||||
end;
|
||||
@ -608,8 +576,6 @@ implementation
|
||||
init(_size);
|
||||
ops:=2;
|
||||
loadsymbol(0,_op1,_op1ofs);
|
||||
if _op2.enum>lastreg then
|
||||
internalerror(200301081);
|
||||
loadreg(1,_op2);
|
||||
end;
|
||||
|
||||
@ -1930,7 +1896,10 @@ implementation
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.10 2003-01-08 18:43:57 daniel
|
||||
Revision 1.11 2003-01-09 20:40:59 daniel
|
||||
* Converted some code in cgx86.pas to new register numbering
|
||||
|
||||
Revision 1.10 2003/01/08 18:43:57 daniel
|
||||
* Tregister changed into a record
|
||||
|
||||
Revision 1.9 2003/01/05 13:36:53 florian
|
||||
|
@ -279,6 +279,9 @@ uses
|
||||
S_D,S_D,S_D,S_D,S_D,S_D,S_D,S_D,
|
||||
S_D,S_D,S_D,S_D,S_D,S_D,S_D,S_D
|
||||
);
|
||||
|
||||
{Converts subregister number to opsize}
|
||||
subreg2opsize:array[0..4] of Topsize = (S_B,S_B,S_W,S_L,S_D);
|
||||
|
||||
{# Standard opcode string table (for each tasmop enumeration). The
|
||||
opcode strings should conform to the names as defined by the
|
||||
@ -708,7 +711,10 @@ implementation
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.38 2003-01-09 15:49:56 daniel
|
||||
Revision 1.39 2003-01-09 20:41:00 daniel
|
||||
* Converted some code in cgx86.pas to new register numbering
|
||||
|
||||
Revision 1.38 2003/01/09 15:49:56 daniel
|
||||
* Added register conversion
|
||||
|
||||
Revision 1.37 2003/01/08 22:32:36 daniel
|
||||
|
@ -326,16 +326,16 @@ implementation
|
||||
procinfo.procdef.fpu_used:=p.registersfpu;
|
||||
|
||||
end;
|
||||
{$ifdef i386}
|
||||
exprasmlist.convert_registers;
|
||||
{$endif}
|
||||
procinfo.aktproccode.concatlist(exprasmlist);
|
||||
end;
|
||||
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.42 2003-01-09 15:49:56 daniel
|
||||
Revision 1.43 2003-01-09 20:40:59 daniel
|
||||
* Converted some code in cgx86.pas to new register numbering
|
||||
|
||||
Revision 1.42 2003/01/09 15:49:56 daniel
|
||||
* Added register conversion
|
||||
|
||||
Revision 1.41 2002/12/22 14:35:39 peter
|
||||
|
@ -361,6 +361,9 @@ implementation
|
||||
aktprocdef.usedregisters:=rg.usedinproc;
|
||||
procinfo.aktproccode.insertlist(procinfo.aktentrycode);
|
||||
procinfo.aktproccode.concatlist(procinfo.aktexitcode);
|
||||
{$ifdef i386}
|
||||
procinfo.aktproccode.convert_registers;
|
||||
{$endif}
|
||||
{$ifndef NoOpt}
|
||||
if (cs_optimize in aktglobalswitches) and
|
||||
{ do not optimize pure assembler procedures }
|
||||
@ -844,7 +847,10 @@ implementation
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.89 2003-01-09 15:49:56 daniel
|
||||
Revision 1.90 2003-01-09 20:40:59 daniel
|
||||
* Converted some code in cgx86.pas to new register numbering
|
||||
|
||||
Revision 1.89 2003/01/09 15:49:56 daniel
|
||||
* Added register conversion
|
||||
|
||||
Revision 1.88 2003/01/08 18:43:56 daniel
|
||||
|
@ -238,6 +238,7 @@ TYPE
|
||||
|
||||
{ immediate/reference record }
|
||||
poperreference = ^treference;
|
||||
Preference=^Treference;
|
||||
treference = packed record
|
||||
segment,
|
||||
base,
|
||||
@ -547,7 +548,10 @@ END.
|
||||
|
||||
{
|
||||
$Log$
|
||||
Revision 1.19 2003-01-09 15:49:56 daniel
|
||||
Revision 1.20 2003-01-09 20:41:00 daniel
|
||||
* Converted some code in cgx86.pas to new register numbering
|
||||
|
||||
Revision 1.19 2003/01/09 15:49:56 daniel
|
||||
* Added register conversion
|
||||
|
||||
Revision 1.18 2003/01/08 18:43:58 daniel
|
||||
|
@ -301,7 +301,7 @@ unit cgx86;
|
||||
regsize_2_cgsize: array[S_B..S_L] of tcgsize = (OS_8,OS_16,OS_32);
|
||||
begin
|
||||
if reg.enum>lastreg then
|
||||
internalerror(200201081);
|
||||
internalerror(200301081);
|
||||
result := regsize_2_cgsize[reg2opsize[reg.enum]];
|
||||
end;
|
||||
|
||||
@ -388,9 +388,9 @@ unit cgx86;
|
||||
if r.segment.enum<>R_NO then
|
||||
CGMessage(cg_e_cant_use_far_pointer_there);
|
||||
if r.base.enum>lastreg then
|
||||
internalerror(200201081);
|
||||
internalerror(200301081);
|
||||
if r.index.enum>lastreg then
|
||||
internalerror(200201081);
|
||||
internalerror(200301081);
|
||||
if (r.base.enum=R_NO) and (r.index.enum=R_NO) then
|
||||
begin
|
||||
if assigned(r.symbol) then
|
||||
@ -463,12 +463,14 @@ unit cgx86;
|
||||
|
||||
var
|
||||
op: tasmop;
|
||||
s: topsize;
|
||||
o,s: topsize;
|
||||
|
||||
begin
|
||||
if reg.enum>lastreg then
|
||||
internalerror(200301081);
|
||||
sizes2load(size,reg2opsize[reg.enum],op,s);
|
||||
if reg.enum=R_INTREGISTER then
|
||||
o:=subreg2opsize[reg.number and $ff]
|
||||
else
|
||||
o:=reg2opsize[reg.enum];
|
||||
sizes2load(size,o,op,s);
|
||||
list.concat(taicpu.op_ref_reg(op,s,ref,reg));
|
||||
end;
|
||||
|
||||
@ -480,10 +482,6 @@ unit cgx86;
|
||||
s: topsize;
|
||||
|
||||
begin
|
||||
if reg1.enum>lastreg then
|
||||
internalerror(200301081);
|
||||
if reg2.enum>lastreg then
|
||||
internalerror(200301081);
|
||||
sizes2load(fromsize,reg2opsize[reg2.enum],op,s);
|
||||
if (rg.makeregsize(reg1,OS_INT).enum = rg.makeregsize(reg2,OS_INT).enum) then
|
||||
begin
|
||||
@ -529,10 +527,6 @@ unit cgx86;
|
||||
procedure tcgx86.a_loadfpu_reg_reg(list: taasmoutput; reg1, reg2: tregister);
|
||||
|
||||
begin
|
||||
if reg1.enum>lastreg then
|
||||
internalerror(200301081);
|
||||
if reg2.enum>lastreg then
|
||||
internalerror(200301081);
|
||||
if (reg1.enum <> R_ST) then
|
||||
begin
|
||||
list.concat(taicpu.op_reg(A_FLD,S_NO,
|
||||
@ -1474,6 +1468,7 @@ unit cgx86;
|
||||
var r:Tregister;
|
||||
|
||||
begin
|
||||
r.enum:=R_INTREGISTER;
|
||||
r.enum:=R_GS;
|
||||
{ .... also the segment registers }
|
||||
list.concat(Taicpu.Op_reg(A_PUSH,S_W,r));
|
||||
@ -1504,50 +1499,51 @@ unit cgx86;
|
||||
var r:Tregister;
|
||||
|
||||
begin
|
||||
r.enum:=R_INTREGISTER;
|
||||
if accused then
|
||||
begin
|
||||
r.enum:=R_ESP;
|
||||
r.number:=NR_ESP;
|
||||
list.concat(Taicpu.Op_const_reg(A_ADD,S_L,4,r))
|
||||
end
|
||||
else
|
||||
begin
|
||||
r.enum:=R_EAX;
|
||||
r.number:=NR_EAX;
|
||||
list.concat(Taicpu.Op_reg(A_POP,S_L,r));
|
||||
end;
|
||||
r.enum:=R_EBX;
|
||||
r.number:=NR_EBX;
|
||||
list.concat(Taicpu.Op_reg(A_POP,S_L,r));
|
||||
r.enum:=R_ECX;
|
||||
r.number:=NR_ECX;
|
||||
list.concat(Taicpu.Op_reg(A_POP,S_L,r));
|
||||
if acchiused then
|
||||
begin
|
||||
r.enum:=R_ESP;
|
||||
r.number:=NR_ESP;
|
||||
list.concat(Taicpu.Op_const_reg(A_ADD,S_L,4,r))
|
||||
end
|
||||
else
|
||||
begin
|
||||
r.enum:=R_EDX;
|
||||
r.number:=NR_EDX;
|
||||
list.concat(Taicpu.Op_reg(A_POP,S_L,r));
|
||||
end;
|
||||
if selfused then
|
||||
begin
|
||||
r.enum:=R_ESP;
|
||||
r.number:=NR_ESP;
|
||||
list.concat(Taicpu.Op_const_reg(A_ADD,S_L,4,r))
|
||||
end
|
||||
else
|
||||
begin
|
||||
r.enum:=R_ESI;
|
||||
r.number:=NR_ESI;
|
||||
list.concat(Taicpu.Op_reg(A_POP,S_L,r));
|
||||
end;
|
||||
r.enum:=R_EDI;
|
||||
r.number:=NR_EDI;
|
||||
list.concat(Taicpu.Op_reg(A_POP,S_L,r));
|
||||
{ .... also the segment registers }
|
||||
r.enum:=R_DS;
|
||||
r.number:=NR_DS;
|
||||
list.concat(Taicpu.Op_reg(A_POP,S_W,r));
|
||||
r.enum:=R_ES;
|
||||
r.number:=NR_ES;
|
||||
list.concat(Taicpu.Op_reg(A_POP,S_W,r));
|
||||
r.enum:=R_FS;
|
||||
r.number:=NR_FS;
|
||||
list.concat(Taicpu.Op_reg(A_POP,S_W,r));
|
||||
r.enum:=R_GS;
|
||||
r.number:=NR_GS;
|
||||
list.concat(Taicpu.Op_reg(A_POP,S_W,r));
|
||||
{ this restores the flags }
|
||||
list.concat(Taicpu.Op_none(A_IRET,S_NO));
|
||||
@ -1571,7 +1567,8 @@ unit cgx86;
|
||||
list.concat(Tai_label.Create(pl));
|
||||
list.concat(Tai_const.Create_32bit(0));
|
||||
list.concat(Tai_section.Create(sec_code));
|
||||
r.enum:=R_EDX;
|
||||
r.enum:=R_INTREGISTER;
|
||||
r.number:=NR_EDX;
|
||||
list.concat(Taicpu.Op_sym_ofs_reg(A_MOV,S_L,pl,0,r));
|
||||
a_call_name(list,target_info.Cprefix+'mcount');
|
||||
include(rg.usedinproc,R_EDX);
|
||||
@ -1592,7 +1589,9 @@ unit cgx86;
|
||||
again : tasmlabel;
|
||||
r,rsp : Tregister;
|
||||
begin
|
||||
rsp.enum:=R_ESP;
|
||||
r.enum:=R_INTREGISTER;
|
||||
rsp.enum:=R_INTREGISTER;
|
||||
rsp.number:=NR_ESP;
|
||||
if localsize>0 then
|
||||
begin
|
||||
{$ifndef NOTARGETWIN32}
|
||||
@ -1609,20 +1608,20 @@ unit cgx86;
|
||||
reference_reset_base(href,rsp,localsize-i*winstackpagesize);
|
||||
list.concat(Taicpu.op_const_ref(A_MOV,S_L,0,href));
|
||||
end;
|
||||
r.enum:=R_EAX;
|
||||
r.number:=NR_EAX;
|
||||
list.concat(Taicpu.op_reg(A_PUSH,S_L,r));
|
||||
end
|
||||
else
|
||||
begin
|
||||
objectlibrary.getlabel(again);
|
||||
r.enum:=R_EDI;
|
||||
r.number:=NR_EDI;
|
||||
rg.getexplicitregisterint(list,R_EDI);
|
||||
list.concat(Taicpu.op_const_reg(A_MOV,S_L,localsize div winstackpagesize,r));
|
||||
a_label(list,again);
|
||||
list.concat(Taicpu.op_const_reg(A_SUB,S_L,winstackpagesize-4,rsp));
|
||||
r.enum:=R_EAX;
|
||||
r.number:=NR_EAX;
|
||||
list.concat(Taicpu.op_reg(A_PUSH,S_L,r));
|
||||
r.enum:=R_EDI;
|
||||
r.number:=NR_EDI;
|
||||
list.concat(Taicpu.op_reg(A_DEC,S_L,r));
|
||||
a_jmp_cond(list,OC_NE,again);
|
||||
rg.ungetregisterint(list,r);
|
||||
@ -1641,8 +1640,10 @@ unit cgx86;
|
||||
var r,rsp:Tregister;
|
||||
|
||||
begin
|
||||
r.enum:=R_EBP;
|
||||
rsp.enum:=R_ESP;
|
||||
r.enum:=R_INTREGISTER;
|
||||
r.number:=NR_EBP;
|
||||
rsp.enum:=R_INTREGISTER;
|
||||
rsp.number:=NR_ESP;
|
||||
list.concat(Taicpu.Op_reg(A_PUSH,S_L,r));
|
||||
list.concat(Taicpu.Op_reg_reg(A_MOV,S_L,rsp,r));
|
||||
if localsize>0 then
|
||||
@ -1712,6 +1713,7 @@ unit cgx86;
|
||||
r : Tregister;
|
||||
|
||||
begin
|
||||
r.enum:=R_INTREGISTER;
|
||||
if is_class(procinfo._class) then
|
||||
begin
|
||||
a_call_name(list,'FPC_DISPOSE_CLASS')
|
||||
@ -1722,17 +1724,18 @@ unit cgx86;
|
||||
if procinfo._class.needs_inittable then
|
||||
begin
|
||||
objectlibrary.getlabel(nofinal);
|
||||
r.enum:=R_EBP;
|
||||
r.number:=NR_EBP;
|
||||
reference_reset_base(href,r,8);
|
||||
a_cmp_const_ref_label(list,OS_ADDR,OC_EQ,0,href,nofinal);
|
||||
r.enum:=R_ESI;
|
||||
r.number:=NR_ESI;
|
||||
reference_reset_base(href,r,0);
|
||||
g_finalize(list,procinfo._class,href,false);
|
||||
a_label(list,nofinal);
|
||||
end;
|
||||
rg.getexplicitregisterint(list,R_EDI);
|
||||
r.enum:=R_EDI;
|
||||
r.number:=NR_EDI;
|
||||
a_load_const_reg(list,OS_ADDR,procinfo._class.vmt_offset,r);
|
||||
r.enum:=R_EDI;
|
||||
rg.ungetregisterint(list,r);
|
||||
a_call_name(list,'FPC_HELP_DESTRUCTOR')
|
||||
end
|
||||
@ -1745,22 +1748,24 @@ unit cgx86;
|
||||
href : treference;
|
||||
r : Tregister;
|
||||
begin
|
||||
r.enum:=R_INTREGISTER;
|
||||
if is_class(procinfo._class) then
|
||||
begin
|
||||
reference_reset_base(href,procinfo.framepointer,8);
|
||||
r.enum:=R_ESI;
|
||||
r.number:=NR_ESI;
|
||||
a_load_ref_reg(list,OS_ADDR,href,r);
|
||||
a_call_name(list,'FPC_HELP_FAIL_CLASS');
|
||||
end
|
||||
else if is_object(procinfo._class) then
|
||||
begin
|
||||
reference_reset_base(href,procinfo.framepointer,12);
|
||||
r.enum:=R_ESI;
|
||||
r.number:=NR_ESI;
|
||||
a_load_ref_reg(list,OS_ADDR,href,r);
|
||||
rg.getexplicitregisterint(list,R_EDI);
|
||||
r.enum:=R_EDI;
|
||||
r.number:=NR_EDI;
|
||||
a_load_const_reg(list,OS_ADDR,procinfo._class.vmt_offset,r);
|
||||
a_call_name(list,'FPC_HELP_FAIL');
|
||||
r.enum:=R_EDI;
|
||||
rg.ungetregisterint(list,r);
|
||||
end
|
||||
else
|
||||
@ -1774,12 +1779,13 @@ unit cgx86;
|
||||
var r:Tregister;
|
||||
|
||||
begin
|
||||
r.enum:=R_EBX;
|
||||
r.enum:=R_INTREGISTER;
|
||||
r.number:=NR_EBX;
|
||||
if (R_EBX in usedinproc) then
|
||||
list.concat(Taicpu.Op_reg(A_PUSH,S_L,r));
|
||||
r.enum:=R_ESI;
|
||||
r.number:=NR_ESI;
|
||||
list.concat(Taicpu.Op_reg(A_PUSH,S_L,r));
|
||||
r.enum:=R_EDI;
|
||||
r.number:=NR_EDI;
|
||||
list.concat(Taicpu.Op_reg(A_PUSH,S_L,r));
|
||||
end;
|
||||
|
||||
@ -1789,11 +1795,12 @@ unit cgx86;
|
||||
var r:Tregister;
|
||||
|
||||
begin
|
||||
r.enum:=R_EDI;
|
||||
r.enum:=R_INTREGISTER;
|
||||
r.number:=NR_EDI;
|
||||
list.concat(Taicpu.Op_reg(A_POP,S_L,r));
|
||||
r.enum:=R_ESI;
|
||||
r.number:=NR_ESI;
|
||||
list.concat(Taicpu.Op_reg(A_POP,S_L,r));
|
||||
r.enum:=R_EBX;
|
||||
r.number:=NR_EBX;
|
||||
if (R_EBX in usedinproc) then
|
||||
list.concat(Taicpu.Op_reg(A_POP,S_L,r));
|
||||
end;
|
||||
@ -1810,23 +1817,25 @@ unit cgx86;
|
||||
href : treference;
|
||||
r,rsp: Tregister;
|
||||
begin
|
||||
rsp.enum:=R_ESP;
|
||||
rsp.enum:=R_INTREGISTER;
|
||||
rsp.number:=NR_ESP;
|
||||
r.enum:=R_INTREGISTER;
|
||||
if selfused then
|
||||
begin
|
||||
reference_reset_base(href,rsp,4);
|
||||
r.enum:=R_ESI;
|
||||
r.number:=NR_ESI;
|
||||
list.concat(Taicpu.Op_reg_ref(A_MOV,S_L,r,href));
|
||||
end;
|
||||
if acchiused then
|
||||
begin
|
||||
reference_reset_base(href,rsp,20);
|
||||
r.enum:=R_EDX;
|
||||
r.number:=NR_EDX;
|
||||
list.concat(Taicpu.Op_reg_ref(A_MOV,S_L,r,href));
|
||||
end;
|
||||
if accused then
|
||||
begin
|
||||
reference_reset_base(href,rsp,28);
|
||||
r.enum:=R_EAX;
|
||||
r.number:=NR_EAX;
|
||||
list.concat(Taicpu.Op_reg_ref(A_MOV,S_L,r,href));
|
||||
end;
|
||||
list.concat(Taicpu.Op_none(A_POPA,S_L));
|
||||
@ -1865,7 +1874,10 @@ unit cgx86;
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.27 2003-01-08 18:43:58 daniel
|
||||
Revision 1.28 2003-01-09 20:41:00 daniel
|
||||
* Converted some code in cgx86.pas to new register numbering
|
||||
|
||||
Revision 1.27 2003/01/08 18:43:58 daniel
|
||||
* Tregister changed into a record
|
||||
|
||||
Revision 1.26 2003/01/05 13:36:53 florian
|
||||
|
Loading…
Reference in New Issue
Block a user