* emitpushreferenceaddress gets now the asmlist as parameter

* m68k version compiles with -duseansistrings
This commit is contained in:
florian 1998-10-14 11:28:13 +00:00
parent 8b972b7b6a
commit 6155ef488c
10 changed files with 88 additions and 46 deletions

View File

@ -79,7 +79,6 @@ Type
PAsmLabel = ^TAsmLabel;
PString = ^String;
{ Each local label has this structure associated with it }
TAsmLabel = record
@ -813,7 +812,7 @@ end;
stringdispose(operands[k].symbol);
end;
end;
{*************************************************************************}
{ Local label utilities }
{*************************************************************************}
@ -1885,7 +1884,11 @@ end;
end.
{
$Log$
Revision 1.11 1998-10-13 16:49:59 pierre
Revision 1.12 1998-10-14 11:28:13 florian
* emitpushreferenceaddress gets now the asmlist as parameter
* m68k version compiles with -duseansistrings
Revision 1.11 1998/10/13 16:49:59 pierre
* undid some changes of Peter that made the compiler wrong
for m68k (I had to reinsert some ifdefs)
* removed several memory leaks under m68k

View File

@ -278,8 +278,8 @@ implementation
pushusedregisters(pushedregs,$ffff);
{ WE INVERSE THE PARAMETERS!!! }
{ Because parameters are inversed in the rtl }
emitpushreferenceaddr(p^.right^.location.reference);
emitpushreferenceaddr(p^.left^.location.reference);
emitpushreferenceaddr(exprasmlist,p^.right^.location.reference);
emitpushreferenceaddr(exprasmlist,p^.left^.location.reference);
emitcall('FPC_STRCONCAT',true);
maybe_loadA5;
popusedregisters(pushedregs);
@ -386,8 +386,8 @@ implementation
del_reference(p^.left^.location.reference);
del_reference(p^.right^.location.reference);
pushusedregisters(pushedregs,$ff);
emitpushreferenceaddr(p^.right^.location.reference);
emitpushreferenceaddr(p^.left^.location.reference);
emitpushreferenceaddr(exprasmlist,p^.right^.location.reference);
emitpushreferenceaddr(exprasmlist,p^.left^.location.reference);
emitcall('FPC_SET_COMP_SETS',true);
maybe_loada5;
popusedregisters(pushedregs);
@ -409,22 +409,22 @@ implementation
begin
loadsetelement(p^.right^.right);
loadsetelement(p^.right^.left);
emitpushreferenceaddr(href);
emitpushreferenceaddr(exprasmlist,href);
emitcall('FPC_SET_SET_RANGE',true);
end
else
begin
loadsetelement(p^.right^.left);
emitpushreferenceaddr(href);
emitpushreferenceaddr(exprasmlist,href);
emitcall('FPC_SET_SET_BYTE',true);
end;
end
else
begin
{ must be an other set }
emitpushreferenceaddr(href);
emitpushreferenceaddr(p^.right^.location.reference);
emitpushreferenceaddr(p^.left^.location.reference);
emitpushreferenceaddr(exprasmlist,href);
emitpushreferenceaddr(exprasmlist,p^.right^.location.reference);
emitpushreferenceaddr(exprasmlist,p^.left^.location.reference);
emitcall('FPC_SET_ADD_SETS',true);
end;
maybe_loada5;
@ -443,9 +443,9 @@ implementation
href.symbol:=nil;
pushusedregisters(pushedregs,$ff);
gettempofsizereference(32,href);
emitpushreferenceaddr(href);
emitpushreferenceaddr(p^.right^.location.reference);
emitpushreferenceaddr(p^.left^.location.reference);
emitpushreferenceaddr(exprasmlist,href);
emitpushreferenceaddr(exprasmlist,p^.right^.location.reference);
emitpushreferenceaddr(exprasmlist,p^.left^.location.reference);
case p^.treetype of
subn : emitcall('FPC_SET_SUB_SETS',true);
symdifn : emitcall('FPC_SET_SYMDIF_SETS',true);
@ -1272,7 +1272,11 @@ implementation
end.
{
$Log$
Revision 1.10 1998-10-13 16:50:03 pierre
Revision 1.11 1998-10-14 11:28:15 florian
* emitpushreferenceaddress gets now the asmlist as parameter
* m68k version compiles with -duseansistrings
Revision 1.10 1998/10/13 16:50:03 pierre
* undid some changes of Peter that made the compiler wrong
for m68k (I had to reinsert some ifdefs)
* removed several memory leaks under m68k

View File

@ -115,7 +115,7 @@ implementation
CGMessage(type_e_mismatch)
else
begin
emitpushreferenceaddr(p^.left^.location.reference);
emitpushreferenceaddr(exprasmlist,p^.left^.location.reference);
del_reference(p^.left^.location.reference);
end;
end;
@ -128,7 +128,7 @@ implementation
CGMessage(cg_e_var_must_be_reference);
maybe_push_open_array_high;
inc(pushedparasize,4);
emitpushreferenceaddr(p^.left^.location.reference);
emitpushreferenceaddr(exprasmlist,p^.left^.location.reference);
del_reference(p^.left^.location.reference);
end
else
@ -141,7 +141,7 @@ implementation
begin
maybe_push_open_array_high;
inc(pushedparasize,4);
emitpushreferenceaddr(p^.left^.location.reference);
emitpushreferenceaddr(exprasmlist,p^.left^.location.reference);
del_reference(p^.left^.location.reference);
end
else
@ -497,7 +497,7 @@ implementation
p^.left:=nil;
if ret_in_param(p^.resulttype) then
begin
emitpushreferenceaddr(funcretref);
emitpushreferenceaddr(exprasmlist,funcretref);
inc(pushedparasize,4);
end;
{ overloaded operator have no symtable }
@ -1047,7 +1047,11 @@ implementation
end.
{
$Log$
Revision 1.8 1998-10-13 16:50:04 pierre
Revision 1.9 1998-10-14 11:28:16 florian
* emitpushreferenceaddress gets now the asmlist as parameter
* m68k version compiles with -duseansistrings
Revision 1.8 1998/10/13 16:50:04 pierre
* undid some changes of Peter that made the compiler wrong
for m68k (I had to reinsert some ifdefs)
* removed several memory leaks under m68k

View File

@ -514,7 +514,7 @@ implementation
case p^.right^.location.loc of
LOC_REGISTER,LOC_CREGISTER:
begin
exprasmlist^.concat(new(pai386,op_reg(A_PUSH,S_L,p^.right^.location.register)));
{ !!!!! exprasmlist^.concat(new(pai68k,op_reg(A_PUSH,S_L,p^.right^.location.register))); }
ungetregister32(p^.left^.location.register);
end;
LOC_REFERENCE,LOC_MEM:
@ -524,7 +524,7 @@ implementation
end;
end;
emitcall('FPC_ANSI_TO_SHORTSTRING',true);
maybe_loadesi;
maybe_loada5;
popusedregisters(pushed);
end;
st_longstring:
@ -1196,8 +1196,8 @@ implementation
href.symbol:=nil;
pushusedregisters(pushedregs,$ff);
gettempofsizereference(32,href);
emitpushreferenceaddr(p^.left^.location.reference);
emitpushreferenceaddr(href);
emitpushreferenceaddr(exprasmlist,p^.left^.location.reference);
emitpushreferenceaddr(exprasmlist,href);
emitcall('FPC_SET_LOAD_SMALL',true);
maybe_loada5;
popusedregisters(pushedregs);
@ -1387,7 +1387,7 @@ implementation
exprasmlist^.concat(new(pai68k,op_csymbol_reg(A_MOVE,
S_L,newcsymbol(pobjectdef(p^.right^.resulttype)^.vmt_mangledname,0),R_SPPUSH)));
concat_external(pobjectdef(p^.right^.resulttype)^.vmt_mangledname,EXT_NEAR);
emitpushreferenceaddr(p^.location.reference);
emitpushreferenceaddr(exprasmlist,p^.location.reference);
emitcall('FPC_DO_AS',true);
popusedregisters(pushed);
end;
@ -1396,7 +1396,11 @@ implementation
end.
{
$Log$
Revision 1.8 1998-10-14 10:45:05 pierre
Revision 1.9 1998-10-14 11:28:17 florian
* emitpushreferenceaddress gets now the asmlist as parameter
* m68k version compiles with -duseansistrings
Revision 1.8 1998/10/14 10:45:05 pierre
* ppu problems for m68k fixed (at least in cross compiling)
* one last memory leak for sysamiga fixed
* the amiga RTL compiles now completely !!

View File

@ -580,7 +580,7 @@ do_jmp:
exit;
case p^.left^.location.loc of
LOC_MEM,LOC_REFERENCE : emitpushreferenceaddr(p^.left^.location.reference);
LOC_MEM,LOC_REFERENCE : emitpushreferenceaddr(exprasmlist,p^.left^.location.reference);
LOC_CREGISTER,LOC_REGISTER : exprasmlist^.concat(new(pai68k,op_reg_reg(A_MOVE,S_L,
p^.left^.location.register,R_SPPUSH)));
else CGMessage(type_e_mismatch);
@ -778,7 +778,11 @@ do_jmp:
end.
{
$Log$
Revision 1.6 1998-10-13 16:50:07 pierre
Revision 1.7 1998-10-14 11:28:19 florian
* emitpushreferenceaddress gets now the asmlist as parameter
* m68k version compiles with -duseansistrings
Revision 1.6 1998/10/13 16:50:07 pierre
* undid some changes of Peter that made the compiler wrong
for m68k (I had to reinsert some ifdefs)
* removed several memory leaks under m68k

View File

@ -795,7 +795,7 @@ implementation
exprasmlist^.concat(new(pai68k,op_const_reg(A_MOVE,S_L,
pfiledef(p^.left^.resulttype)^.typed_as^.size,R_SPPUSH)));
secondload(p^.left);
emitpushreferenceaddr(p^.left^.location.reference);
emitpushreferenceaddr(exprasmlist,p^.left^.location.reference);
if p^.inlinenumber=in_reset_typedfile then
emitcall('FPC_RESET_TYPED',true)
else
@ -890,7 +890,11 @@ implementation
end.
{
$Log$
Revision 1.8 1998-10-14 08:08:52 pierre
Revision 1.9 1998-10-14 11:28:20 florian
* emitpushreferenceaddress gets now the asmlist as parameter
* m68k version compiles with -duseansistrings
Revision 1.8 1998/10/14 08:08:52 pierre
* following Peters remark, removed all ifdef in
the systems unit enums
* last bugs of cg68k removed for sysamiga

View File

@ -138,7 +138,8 @@ implementation
case p^.left^.location.loc of
LOC_CREGISTER : exprasmlist^.concat(new(pai68k,op_reg_reg(A_MOVE,S_L,
p^.left^.location.register,R_SPPUSH)));
LOC_REFERENCE : emitpushreferenceaddr(p^.left^.location.reference);
LOC_REFERENCE:
emitpushreferenceaddr(exprasmlist,p^.left^.location.reference);
end;
@ -688,7 +689,11 @@ implementation
end.
{
$Log$
Revision 1.7 1998-10-14 08:08:54 pierre
Revision 1.8 1998-10-14 11:28:21 florian
* emitpushreferenceaddress gets now the asmlist as parameter
* m68k version compiles with -duseansistrings
Revision 1.7 1998/10/14 08:08:54 pierre
* following Peters remark, removed all ifdef in
the systems unit enums
* last bugs of cg68k removed for sysamiga

View File

@ -41,7 +41,7 @@ unit cga68k;
function maybe_push(needed : byte;p : ptree) : boolean;
procedure restore(p : ptree);
procedure emit_push_mem(const ref : treference);
procedure emitpushreferenceaddr(const ref : treference);
procedure emitpushreferenceaddr(list : paasmoutput;const ref : treference);
procedure copystring(const dref,sref : treference;len : byte);
procedure concatcopy(source,dest : treference;size : longint;delsource : boolean);
{ see implementation }
@ -431,7 +431,7 @@ procedure mov_reg_to_dest(p : ptree; s : topsize; reg : tregister);
{ USES REGISTER R_A1 }
procedure emitpushreferenceaddr(const ref : treference);
procedure emitpushreferenceaddr(list : paasmoutput;const ref : treference);
{ Push a pointer to a value on the stack }
begin
if ref.isintvalue then
@ -439,19 +439,19 @@ procedure mov_reg_to_dest(p : ptree; s : topsize; reg : tregister);
else
begin
if (ref.base=R_NO) and (ref.index=R_NO) then
exprasmlist^.concat(new(pai68k,op_ref(A_PEA,S_L,
list^.concat(new(pai68k,op_ref(A_PEA,S_L,
newreference(ref))))
else if (ref.base=R_NO) and (ref.index<>R_NO) and
(ref.offset=0) and (ref.scalefactor=0) and (ref.symbol=nil) then
exprasmlist^.concat(new(pai68k,op_reg_reg(A_MOVE,S_L,
list^.concat(new(pai68k,op_reg_reg(A_MOVE,S_L,
ref.index,R_SPPUSH)))
else if (ref.base<>R_NO) and (ref.index=R_NO) and
(ref.offset=0) and (ref.symbol=nil) then
exprasmlist^.concat(new(pai68k,op_reg_reg(A_MOVE,S_L,ref.base,R_SPPUSH)))
list^.concat(new(pai68k,op_reg_reg(A_MOVE,S_L,ref.base,R_SPPUSH)))
else
begin
exprasmlist^.concat(new(pai68k,op_ref_reg(A_LEA,S_L,newreference(ref),R_A1)));
exprasmlist^.concat(new(pai68k,op_reg_reg(A_MOVE,S_L,R_A1,R_SPPUSH)));
list^.concat(new(pai68k,op_ref_reg(A_LEA,S_L,newreference(ref),R_A1)));
list^.concat(new(pai68k,op_reg_reg(A_MOVE,S_L,R_A1,R_SPPUSH)));
end;
end;
end;
@ -1344,7 +1344,11 @@ end;
end.
{
$Log$
Revision 1.22 1998-10-13 16:50:12 pierre
Revision 1.23 1998-10-14 11:28:22 florian
* emitpushreferenceaddress gets now the asmlist as parameter
* m68k version compiles with -duseansistrings
Revision 1.22 1998/10/13 16:50:12 pierre
* undid some changes of Peter that made the compiler wrong
for m68k (I had to reinsert some ifdefs)
* removed several memory leaks under m68k

View File

@ -151,8 +151,10 @@ uses
{$O messages}
{$O gendef}
{$O import}
{$ifdef i386}
{$O os2_targ}
{$O win_targ}
{$endif i386}
{$O asmutils}
{$ifdef gdb}
{$O gdb}
@ -261,7 +263,11 @@ begin
end.
{
$Log$
Revision 1.33 1998-10-08 17:17:26 pierre
Revision 1.34 1998-10-14 11:28:24 florian
* emitpushreferenceaddress gets now the asmlist as parameter
* m68k version compiles with -duseansistrings
Revision 1.33 1998/10/08 17:17:26 pierre
* current_module old scanner tagged as invalid if unit is recompiled
+ added ppheap for better info on tracegetmem of heaptrc
(adds line column and file index)

View File

@ -208,7 +208,7 @@ implementation
os_infos : array[1..oscnt] of tosinfo = (
(
id : os_none;
name : 'No operating system';
name : 'No operating system'
),
(
id : os_i386_go32v1;
@ -500,7 +500,7 @@ implementation
****************************************************************************}
link_infos : array[1..linkcnt] of tlinkinfo = (
(
id : link_none;
id : link_none
)
{$ifdef i386}
,(
@ -603,7 +603,7 @@ implementation
****************************************************************************}
ar_infos : array[1..arcnt] of tarinfo = (
(
id : ar_none;
id : ar_none
)
{$ifdef i386}
,(
@ -1130,7 +1130,11 @@ begin
end.
{
$Log$
Revision 1.43 1998-10-14 08:08:56 pierre
Revision 1.44 1998-10-14 11:28:25 florian
* emitpushreferenceaddress gets now the asmlist as parameter
* m68k version compiles with -duseansistrings
Revision 1.43 1998/10/14 08:08:56 pierre
* following Peters remark, removed all ifdef in
the systems unit enums
* last bugs of cg68k removed for sysamiga