mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-13 13:29:24 +02:00
* esi_offset -> selfpointer_offset to be newcg compatible
* hcogegen -> cgbase fixes for newcg
This commit is contained in:
parent
3835a94b89
commit
23ca9de3b3
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user