* esi_offset -> selfpointer_offset to be newcg compatible

* hcogegen -> cgbase fixes for newcg
This commit is contained in:
peter 1999-11-09 23:06:44 +00:00
parent 3835a94b89
commit 23ca9de3b3
14 changed files with 135 additions and 60 deletions

View File

@ -770,7 +770,7 @@ do_jmp:
{ also reset to zero in the stack }
new(hp);
reset_reference(hp^);
hp^.offset:=procinfo^.ESI_offset;
hp^.offset:=procinfo^.selfpointer_offset;
hp^.base:=procinfo^.framepointer;
exprasmlist^.concat(new(paicpu,op_reg_ref(A_MOVE,S_L,R_A5,hp)));
exprasmlist^.concat(new(pai_labeled,init(A_JMP,quickexitlabel)));
@ -779,7 +779,11 @@ do_jmp:
end.
{
$Log$
Revision 1.11 1999-09-27 23:44:48 peter
Revision 1.12 1999-11-09 23:06:44 peter
* esi_offset -> selfpointer_offset to be newcg compatible
* hcogegen -> cgbase fixes for newcg
Revision 1.11 1999/09/27 23:44:48 peter
* procinfo is now a pointer
* support for result setting in sub procedure

View File

@ -886,7 +886,7 @@ begin
if assigned(procinfo^._class) then
procinfo^.aktexitcode^.concat(new(pai_stabs,init(strpnew(
'"$t:v'+procinfo^._class^.numberstring+'",'+
tostr(N_PSYM)+',0,0,'+tostr(procinfo^.esi_offset)))));
tostr(N_PSYM)+',0,0,'+tostr(procinfo^.selfpointer_offset)))));
if (porddef(aktprocsym^.definition^.retdef) <> voiddef) then
procinfo^.aktexitcode^.concat(new(pai_stabs,init(strpnew(
@ -1166,7 +1166,7 @@ end;
end;
new(hp);
reset_reference(hp^);
hp^.offset:=p^.ESI_offset;
hp^.offset:=p^.selfpointer_offset;
hp^.base:=R_A5;
exprasmlist^.concat(new(paicpu,op_ref_reg(A_MOVE,S_L,hp,R_A5)));
end
@ -1174,7 +1174,7 @@ end;
begin
new(hp);
reset_reference(hp^);
hp^.offset:=procinfo^.ESI_offset;
hp^.offset:=procinfo^.selfpointer_offset;
hp^.base:=procinfo^.framepointer;
exprasmlist^.concat(new(paicpu,op_ref_reg(A_MOVE,S_L,hp,R_A5)));
end;
@ -1391,7 +1391,11 @@ end;
end.
{
$Log$
Revision 1.36 1999-11-06 14:34:18 peter
Revision 1.37 1999-11-09 23:06:44 peter
* esi_offset -> selfpointer_offset to be newcg compatible
* hcogegen -> cgbase fixes for newcg
Revision 1.36 1999/11/06 14:34:18 peter
* truncated log to 20 revs
Revision 1.35 1999/09/27 23:44:48 peter

View File

@ -2290,7 +2290,7 @@ procedure mov_reg_to_dest(p : ptree; s : topsize; reg : tregister);
end;
new(hp);
reset_reference(hp^);
hp^.offset:=p^.ESI_offset;
hp^.offset:=p^.selfpointer_offset;
hp^.base:=R_ESI;
emit_ref_reg(A_MOV,S_L,hp,R_ESI);
end
@ -2298,7 +2298,7 @@ procedure mov_reg_to_dest(p : ptree; s : topsize; reg : tregister);
begin
new(hp);
reset_reference(hp^);
hp^.offset:=procinfo^.ESI_offset;
hp^.offset:=procinfo^.selfpointer_offset;
hp^.base:=procinfo^.framepointer;
emit_ref_reg(A_MOV,S_L,hp,R_ESI);
end;
@ -2889,7 +2889,7 @@ procedure mov_reg_to_dest(p : ptree; s : topsize; reg : tregister);
begin
new(hr);
reset_reference(hr^);
hr^.offset:=procinfo^.ESI_offset;
hr^.offset:=procinfo^.selfpointer_offset;
hr^.base:=procinfo^.framepointer;
exprasmlist^.insert(new(paicpu,op_ref_reg(A_MOV,S_L,hr,R_ESI)));
end;
@ -3374,7 +3374,7 @@ procedure mov_reg_to_dest(p : ptree; s : topsize; reg : tregister);
not assigned(procinfo^.parent^._class)) then
exprasmlist^.concat(new(pai_stabs,init(strpnew(
'"$t:v'+procinfo^._class^.numberstring+'",'+
tostr(N_PSYM)+',0,0,'+tostr(procinfo^.esi_offset)))))
tostr(N_PSYM)+',0,0,'+tostr(procinfo^.selfpointer_offset)))))
else
exprasmlist^.concat(new(pai_stabs,init(strpnew(
'"$t:r'+procinfo^._class^.numberstring+'",'+
@ -3447,7 +3447,11 @@ procedure mov_reg_to_dest(p : ptree; s : topsize; reg : tregister);
end.
{
$Log$
Revision 1.57 1999-11-06 14:34:19 peter
Revision 1.58 1999-11-09 23:06:44 peter
* esi_offset -> selfpointer_offset to be newcg compatible
* hcogegen -> cgbase fixes for newcg
Revision 1.57 1999/11/06 14:34:19 peter
* truncated log to 20 revs
Revision 1.56 1999/10/25 12:18:11 peter

View File

@ -514,17 +514,15 @@ const
max_scratch_regs = 1;
{$ifndef noopt}
{ low and high of the available maximum width integer general purpose }
{ registers }
LoGPReg = R_EAX;
HiGPReg = R_EDI;
LoGPReg = R_EAX;
HiGPReg = R_EDI;
{ low and high of every possible width general purpose register (same as }
{ above on most architctures apart from the 80x86) }
LoReg = R_EAX;
HiReg = R_BL;
{$endif noopt}
LoReg = R_EAX;
HiReg = R_BL;
cpuflags = [];
@ -889,7 +887,11 @@ end;
end.
{
$Log$
Revision 1.16 1999-11-06 14:34:20 peter
Revision 1.17 1999-11-09 23:06:45 peter
* esi_offset -> selfpointer_offset to be newcg compatible
* hcogegen -> cgbase fixes for newcg
Revision 1.16 1999/11/06 14:34:20 peter
* truncated log to 20 revs
Revision 1.15 1999/10/27 16:11:28 peter

View File

@ -67,7 +67,7 @@ implementation
{ frame pointer offset }
framepointer_offset : longint;
{ self pointer offset }
ESI_offset : longint;
selfpointer_offset : longint;
{ result value offset }
retoffset : longint;
@ -374,7 +374,11 @@ end.
{
$Log$
Revision 1.47 1999-11-06 14:34:21 peter
Revision 1.48 1999-11-09 23:06:45 peter
* esi_offset -> selfpointer_offset to be newcg compatible
* hcogegen -> cgbase fixes for newcg
Revision 1.47 1999/11/06 14:34:21 peter
* truncated log to 20 revs
Revision 1.46 1999/10/21 14:18:54 peter

View File

@ -1068,15 +1068,20 @@ begin
{$ifdef m68k}
def_symbol('CPU68');
{$endif}
{ new processor stuff }
{$ifdef i386}
def_symbol('CPUI386');
{$endif}
{$ifdef m68k}
def_symbol('CPU68K');
{$endif}
{$ifdef ALPHA}
def_symbol('CPUALPHA');
{$endif}
{$ifdef powerpc}
def_symbol('CPUPOWERPC');
{$endif}
{$ifdef m68k}
def_symbol('CPU68K');
{$endif}
{ get default messagefile }
{$ifdef Delphi}
@ -1251,7 +1256,11 @@ end;
end.
{
$Log$
Revision 1.33 1999-11-06 14:34:21 peter
Revision 1.34 1999-11-09 23:06:45 peter
* esi_offset -> selfpointer_offset to be newcg compatible
* hcogegen -> cgbase fixes for newcg
Revision 1.33 1999/11/06 14:34:21 peter
* truncated log to 20 revs
Revision 1.32 1999/11/04 23:13:25 peter

View File

@ -464,7 +464,7 @@ implementation
{ calc parameter distance new }
dec(procinfo^.framepointer_offset,4);
dec(procinfo^.ESI_offset,4);
dec(procinfo^.selfpointer_offset,4);
{ is this correct ???}
{ retoffset can be negativ for results in eax !! }
@ -697,7 +697,11 @@ implementation
end.
{
$Log$
Revision 1.41 1999-11-06 14:34:21 peter
Revision 1.42 1999-11-09 23:06:45 peter
* esi_offset -> selfpointer_offset to be newcg compatible
* hcogegen -> cgbase fixes for newcg
Revision 1.41 1999/11/06 14:34:21 peter
* truncated log to 20 revs
Revision 1.40 1999/09/27 23:44:52 peter

View File

@ -117,11 +117,7 @@ unit pdecl;
{$else}
aktprocdef^.procoptions:=aktprocdef^.procoptions+[po_containsself];
{$endif}
{$ifdef newcg}
inc(procinfo^.selfpointer_offset,vs^.address);
{$else newcg}
inc(procinfo^.ESI_offset,vs^.address);
{$endif newcg}
end;
consume(idtoken);
consume(_COLON);
@ -1190,7 +1186,11 @@ unit pdecl;
end.
{
$Log$
Revision 1.169 1999-11-09 12:58:29 peter
Revision 1.170 1999-11-09 23:06:45 peter
* esi_offset -> selfpointer_offset to be newcg compatible
* hcogegen -> cgbase fixes for newcg
Revision 1.169 1999/11/09 12:58:29 peter
* support absolute unit.variable
Revision 1.168 1999/11/06 14:34:21 peter

View File

@ -65,18 +65,22 @@ uses
{$ifdef GDB}
,gdb
{$endif GDB}
{$ifdef i386}
{$ifndef newcg}
,tgeni386
,cgai386
{$endif newcg}
{$ifndef NoOpt}
,aopt386
{$ifdef newcg}
{$ifndef NOOPT}
,aopt
{$endif}
{$endif}
{$ifdef m68k}
,tgen68k,cga68k
{$endif}
{$else}
{$ifdef i386}
,tgeni386
,cgai386
{$ifndef NOOPT}
,aopt386
{$endif}
{$endif}
{$ifdef m68k}
,tgen68k,cga68k
{$endif}
{$endif newcg}
{ parser specific stuff }
,pbase,ptype,pdecl,pexpr,pstatmnt
{$ifdef newcg}
@ -292,11 +296,7 @@ begin
{ self isn't pushed in nested procedure of methods }
if assigned(procinfo^._class) and (lexlevel=normal_function_level) then
begin
{$ifdef newcg}
procinfo^.selfpointer_offset:=paramoffset;
{$else newcg}
procinfo^.ESI_offset:=paramoffset;
{$endif newcg}
if assigned(aktprocsym^.definition) and
not(po_containsself in aktprocsym^.definition^.procoptions) then
inc(paramoffset,target_os.size_of_pointer);
@ -1902,7 +1902,11 @@ end.
{
$Log$
Revision 1.31 1999-11-06 14:34:23 peter
Revision 1.32 1999-11-09 23:06:45 peter
* esi_offset -> selfpointer_offset to be newcg compatible
* hcogegen -> cgbase fixes for newcg
Revision 1.31 1999/11/06 14:34:23 peter
* truncated log to 20 revs
Revision 1.30 1999/10/26 12:30:44 peter

View File

@ -37,8 +37,13 @@ Implementation
Uses
globtype,
strings,cobjects,systems,verbose,globals,
files,aasm,types,symconst,symtable,scanner,hcodegen,
cpubase,rautils,ra386;
files,aasm,types,symconst,symtable,scanner,cpubase,
{$ifdef NEWCG}
cgbase,
{$else}
hcodegen,
{$endif}
rautils,ra386;
type
tasmtoken = (
@ -1987,7 +1992,11 @@ begin
end.
{
$Log$
Revision 1.61 1999-11-06 14:34:23 peter
Revision 1.62 1999-11-09 23:06:46 peter
* esi_offset -> selfpointer_offset to be newcg compatible
* hcogegen -> cgbase fixes for newcg
Revision 1.61 1999/11/06 14:34:23 peter
* truncated log to 20 revs
Revision 1.60 1999/10/01 07:59:20 peter

View File

@ -32,8 +32,13 @@ unit Ra386dir;
implementation
uses
files,hcodegen,globals,scanner,aasm,cpubase,cpuasm,
files,globals,scanner,aasm,cpubase,cpuasm,
cobjects,symconst,symtable,types,verbose,
{$ifdef NEWCG}
cgbase,
{$else}
hcodegen,
{$endif}
rautils,ra386;
function assemble : ptree;
@ -230,7 +235,7 @@ unit Ra386dir;
if upper(hs)='__SELF' then
begin
if assigned(procinfo^._class) then
hs:=tostr(procinfo^.ESI_offset)+'('+att_reg2str[procinfo^.framepointer]+')'
hs:=tostr(procinfo^.selfpointer_offset)+'('+att_reg2str[procinfo^.framepointer]+')'
else
Message(asmr_e_cannot_use_SELF_outside_a_method);
end
@ -290,7 +295,11 @@ unit Ra386dir;
end.
{
$Log$
Revision 1.25 1999-11-06 14:34:24 peter
Revision 1.26 1999-11-09 23:06:46 peter
* esi_offset -> selfpointer_offset to be newcg compatible
* hcogegen -> cgbase fixes for newcg
Revision 1.25 1999/11/06 14:34:24 peter
* truncated log to 20 revs
Revision 1.24 1999/09/27 23:44:58 peter

View File

@ -38,7 +38,12 @@ Implementation
Uses
globtype,
strings,cobjects,systems,verbose,globals,
files,aasm,types,scanner,hcodegen,symtable,cpubase,
files,aasm,types,scanner,symtable,cpubase,
{$ifdef NEWCG}
cgbase,
{$else}
hcodegen,
{$endif}
rautils,ra386;
@ -1767,7 +1772,11 @@ begin
end.
{
$Log$
Revision 1.51 1999-11-06 14:34:24 peter
Revision 1.52 1999-11-09 23:06:46 peter
* esi_offset -> selfpointer_offset to be newcg compatible
* hcogegen -> cgbase fixes for newcg
Revision 1.51 1999/11/06 14:34:24 peter
* truncated log to 20 revs
Revision 1.50 1999/10/01 07:59:21 peter

View File

@ -1634,7 +1634,7 @@ var
Begin
if assigned(procinfo._class) then
Begin
instr.operands[operandnum].ref.offset := procinfo.ESI_offset;
instr.operands[operandnum].ref.offset := procinfo.selfpointer_offset;
instr.operands[operandnum].ref.base := procinfo.framepointer;
end
else
@ -2178,7 +2178,11 @@ Begin
end.
{
$Log$
Revision 1.9 1999-09-16 23:05:56 florian
Revision 1.10 1999-11-09 23:06:46 peter
* esi_offset -> selfpointer_offset to be newcg compatible
* hcogegen -> cgbase fixes for newcg
Revision 1.9 1999/09/16 23:05:56 florian
* m68k compiler is again compilable (only gas writer, no assembler reader)
Revision 1.8 1999/01/10 15:37:59 peter

View File

@ -27,7 +27,12 @@ Uses
strings,
cobjects,
globtype,systems,verbose,globals,files,
symconst,symtable,aasm,hcodegen,cpubase,cpuasm
symconst,symtable,aasm,cpubase,cpuasm
{$ifdef NEWCG}
,cgbase
{$else}
,hcodegen
{$endif}
;
Const
@ -692,7 +697,7 @@ Begin
if assigned(procinfo^._class) then
Begin
opr.typ:=OPR_REFERENCE;
opr.ref.offset:=procinfo^.ESI_offset;
opr.ref.offset:=procinfo^.selfpointer_offset;
opr.ref.base:=procinfo^.framepointer;
opr.ref.options:=ref_selffixup;
SetupSelf:=true;
@ -1433,7 +1438,11 @@ end;
end.
{
$Log$
Revision 1.28 1999-11-06 14:34:26 peter
Revision 1.29 1999-11-09 23:06:46 peter
* esi_offset -> selfpointer_offset to be newcg compatible
* hcogegen -> cgbase fixes for newcg
Revision 1.28 1999/11/06 14:34:26 peter
* truncated log to 20 revs
Revision 1.27 1999/09/27 23:44:58 peter