* big transformation of Tai_[const_]Symbol.Create[data]name*

This commit is contained in:
olle 2004-03-02 00:36:32 +00:00
parent 138027e76e
commit 4fecc1a56f
44 changed files with 382 additions and 358 deletions

View File

@ -190,9 +190,7 @@ interface
procedure Freeasmsymbolidx;
procedure DerefAsmsymbol(var s:tasmsymbol);
{ asmsymbol }
function newasmsymbol(const s : string) : tasmsymbol;
function newasmsymboldata(const s : string) : tasmsymbol;
function newasmsymboltype(const s : string;_bind:TAsmSymBind;_typ:TAsmsymtype) : tasmsymbol;
function newasmsymbol(const s : string;_bind:TAsmSymBind;_typ:TAsmsymtype) : tasmsymbol;
function getasmsymbol(const s : string) : tasmsymbol;
function renameasmsymbol(const sold, snew : string):tasmsymbol;
function newasmlabel(nr:longint;is_addr,is_data:boolean) : tasmlabel;
@ -702,37 +700,7 @@ implementation
end;
function TAsmLibraryData.newasmsymbol(const s : string) : tasmsymbol;
var
hp : tasmsymbol;
begin
hp:=tasmsymbol(symbolsearch.search(s));
if not assigned(hp) then
begin
{ Not found, insert it as an External }
hp:=tasmsymbol.create(s,AB_EXTERNAL,AT_FUNCTION);
symbolsearch.insert(hp);
end;
newasmsymbol:=hp;
end;
function TAsmLibraryData.newasmsymboldata(const s : string) : tasmsymbol;
var
hp : tasmsymbol;
begin
hp:=tasmsymbol(symbolsearch.search(s));
if not assigned(hp) then
begin
{ Not found, insert it as an External }
hp:=tasmsymbol.create(s,AB_EXTERNAL,AT_DATA);
symbolsearch.insert(hp);
end;
newasmsymboldata:=hp;
end;
function TAsmLibraryData.newasmsymboltype(const s : string;_bind:TAsmSymBind;_typ:Tasmsymtype) : tasmsymbol;
function TAsmLibraryData.newasmsymbol(const s : string;_bind:TAsmSymBind;_typ:Tasmsymtype) : tasmsymbol;
var
hp : tasmsymbol;
begin
@ -744,11 +712,11 @@ implementation
end
else
begin
{ Not found, insert it as an External }
{ Not found, insert it. }
hp:=tasmsymbol.create(s,_bind,_typ);
symbolsearch.insert(hp);
end;
newasmsymboltype:=hp;
newasmsymbol:=hp;
end;
@ -905,7 +873,10 @@ implementation
end.
{
$Log$
Revision 1.15 2003-05-23 14:27:35 peter
Revision 1.16 2004-03-02 00:36:32 olle
* big transformation of Tai_[const_]Symbol.Create[data]name*
Revision 1.15 2003/05/23 14:27:35 peter
* remove some unit dependencies
* current_procinfo changes to store more info

View File

@ -269,10 +269,8 @@ interface
size : longint;
constructor Create(_sym:tasmsymbol;siz:longint);
constructor Create_Global(_sym:tasmsymbol;siz:longint);
constructor Createname(const _name : string;siz:longint);
constructor Createname_global(const _name : string;siz:longint);
constructor Createdataname(const _name : string;siz:longint);
constructor Createdataname_global(const _name : string;siz:longint);
constructor Createname(const _name : string;_symtyp:Tasmsymtype;siz:longint);
constructor Createname_global(const _name : string;_symtyp:Tasmsymtype;siz:longint);
constructor ppuload(t:taitype;ppufile:tcompilerppufile);override;
procedure ppuwrite(ppufile:tcompilerppufile);override;
procedure derefimpl;override;
@ -358,10 +356,8 @@ interface
constructor Create(_sym:tasmsymbol);
constructor Create_offset(_sym:tasmsymbol;ofs:longint);
constructor Create_rva(_sym:tasmsymbol);
constructor Createname(const name:string);
constructor Createname_offset(const name:string;ofs:longint);
constructor Createname(const name:string;_symtyp:Tasmsymtype;ofs:longint);
constructor Createname_rva(const name:string);
constructor Createdataname(const name:string);
constructor ppuload(t:taitype;ppufile:tcompilerppufile);override;
procedure ppuwrite(ppufile:tcompilerppufile);override;
procedure derefimpl;override;
@ -718,7 +714,7 @@ implementation
begin
inherited Create;
typ:=ait_datablock;
sym:=objectlibrary.newasmsymboltype(_name,AB_LOCAL,AT_DATA);
sym:=objectlibrary.newasmsymbol(_name,AB_LOCAL,AT_DATA);
{ keep things aligned }
if _size<=0 then
_size:=4;
@ -731,7 +727,7 @@ implementation
begin
inherited Create;
typ:=ait_datablock;
sym:=objectlibrary.newasmsymboltype(_name,AB_GLOBAL,AT_DATA);
sym:=objectlibrary.newasmsymbol(_name,AB_GLOBAL,AT_DATA);
{ keep things aligned }
if _size<=0 then
_size:=4;
@ -788,43 +784,24 @@ implementation
is_global:=true;
end;
constructor tai_symbol.Createname(const _name : string;siz:longint);
constructor tai_symbol.Createname(const _name : string;_symtyp:Tasmsymtype;siz:longint);
begin
inherited Create;
typ:=ait_symbol;
sym:=objectlibrary.newasmsymboltype(_name,AB_LOCAL,AT_FUNCTION);
sym:=objectlibrary.newasmsymbol(_name,AB_LOCAL,_symtyp);
size:=siz;
is_global:=false;
end;
constructor tai_symbol.Createname_global(const _name : string;siz:longint);
constructor tai_symbol.Createname_global(const _name : string;_symtyp:Tasmsymtype;siz:longint);
begin
inherited Create;
typ:=ait_symbol;
sym:=objectlibrary.newasmsymboltype(_name,AB_GLOBAL,AT_FUNCTION);
sym:=objectlibrary.newasmsymbol(_name,AB_GLOBAL,_symtyp);
size:=siz;
is_global:=true;
end;
constructor tai_symbol.Createdataname(const _name : string;siz:longint);
begin
inherited Create;
typ:=ait_symbol;
sym:=objectlibrary.newasmsymboltype(_name,AB_LOCAL,AT_DATA);
size:=siz;
is_global:=false;
end;
constructor tai_symbol.Createdataname_global(const _name : string;siz:longint);
begin
inherited Create;
typ:=ait_symbol;
sym:=objectlibrary.newasmsymboltype(_name,AB_GLOBAL,AT_DATA);
size:=siz;
is_global:=true;
end;
constructor tai_symbol.ppuload(t:taitype;ppufile:tcompilerppufile);
begin
inherited ppuload(t,ppufile);
@ -850,7 +827,7 @@ implementation
{****************************************************************************
TAI_SYMBOL
TAI_SYMBOL_END
****************************************************************************}
constructor tai_symbol_end.Create(_sym:tasmsymbol);
@ -864,7 +841,7 @@ implementation
begin
inherited Create;
typ:=ait_symbol_end;
sym:=objectlibrary.newasmsymboltype(_name,AB_GLOBAL,AT_NONE);
sym:=objectlibrary.newasmsymbol(_name,AB_GLOBAL,AT_NONE);
end;
constructor tai_symbol_end.ppuload(t:taitype;ppufile:tcompilerppufile);
@ -981,21 +958,11 @@ implementation
sym.increfs;
end;
constructor tai_const_symbol.Createname(const name:string);
constructor tai_const_symbol.Createname(const name:string;_symtyp:Tasmsymtype;ofs:longint);
begin
inherited Create;
typ:=ait_const_symbol;
sym:=objectlibrary.newasmsymbol(name);
offset:=0;
{ update sym info }
sym.increfs;
end;
constructor tai_const_symbol.Createname_offset(const name:string;ofs:longint);
begin
inherited Create;
typ:=ait_const_symbol;
sym:=objectlibrary.newasmsymbol(name);
sym:=objectlibrary.newasmsymbol(name,AB_EXTERNAL,_symtyp);
offset:=ofs;
{ update sym info }
sym.increfs;
@ -1005,24 +972,12 @@ implementation
begin
inherited Create;
typ:=ait_const_rva;
sym:=objectlibrary.newasmsymbol(name);
sym:=objectlibrary.newasmsymbol(name,AB_EXTERNAL,AT_FUNCTION);
offset:=0;
{ update sym info }
sym.increfs;
end;
constructor tai_const_symbol.Createdataname(const name:string);
begin
inherited Create;
typ:=ait_const_symbol;
sym:=objectlibrary.newasmsymboltype(name,AB_EXTERNAL,AT_DATA);
offset:=0;
{ update sym info }
sym.increfs;
end;
constructor tai_const_symbol.ppuload(t:taitype;ppufile:tcompilerppufile);
begin
inherited ppuload(t,ppufile);
@ -2005,7 +1960,10 @@ implementation
end.
{
$Log$
Revision 1.74 2004-02-27 12:13:15 daniel
Revision 1.75 2004-03-02 00:36:32 olle
* big transformation of Tai_[const_]Symbol.Create[data]name*
Revision 1.74 2004/02/27 12:13:15 daniel
- Removed troublesome writeln statement
Revision 1.73 2004/02/27 10:21:04 florian

View File

@ -85,7 +85,7 @@ end;
procedure tcgalpha.a_call_name(list : taasmoutput;const s : string);
begin
{ list^.concat(taicpu,op_sym(A_CALL,S_NO,newasmsymbol(s)))); }
{ list^.concat(taicpu,op_sym(A_CALL,S_NO,newasmsymbol(s,AB_EXTERNAL,AT_FUNCTION)))); }
{!!!!!!!!!1 offset is ignored }
abstract;
end;
@ -161,7 +161,10 @@ end;
end.
{
$Log$
Revision 1.3 2002-09-29 23:42:45 florian
Revision 1.4 2004-03-02 00:36:33 olle
* big transformation of Tai_[const_]Symbol.Create[data]name*
Revision 1.3 2002/09/29 23:42:45 florian
* several fixes to get forward with alpha compilation
Revision 1.2 2002/09/07 15:25:10 peter

View File

@ -249,7 +249,7 @@ unit cgcpu;
procedure tcgarm.a_call_name(list : taasmoutput;const s : string);
begin
list.concat(taicpu.op_sym(A_BL,objectlibrary.newasmsymbol(s)));
list.concat(taicpu.op_sym(A_BL,objectlibrary.newasmsymbol(s,AB_EXTERNAL,AT_FUNCTION)));
if not(pi_do_call in current_procinfo.flags) then
internalerror(2003060703);
end;
@ -800,7 +800,7 @@ unit cgcpu;
procedure tcgarm.a_jmp_always(list : taasmoutput;l: tasmlabel);
begin
list.concat(taicpu.op_sym(A_B,objectlibrary.newasmsymbol(l.name)));
list.concat(taicpu.op_sym(A_B,objectlibrary.newasmsymbol(l.name,AB_EXTERNAL,AT_FUNCTION)));
end;
@ -1273,7 +1273,10 @@ begin
end.
{
$Log$
Revision 1.44 2004-02-04 22:01:13 peter
Revision 1.45 2004-03-02 00:36:33 olle
* big transformation of Tai_[const_]Symbol.Create[data]name*
Revision 1.44 2004/02/04 22:01:13 peter
* first try to get cpupara working for x86_64
Revision 1.43 2004/01/29 17:09:32 florian

View File

@ -438,7 +438,7 @@ Unit raarmgas;
{ not found, finally ... add it anyways ... }
Message1(asmr_w_id_supposed_external,expr);
oper.InitRef;
oper.opr.ref.symbol:=objectlibrary.newasmsymbol(expr);
oper.opr.ref.symbol:=objectlibrary.newasmsymbol(expr,AB_EXTERNAL,AT_FUNCTION);
end;
end
else
@ -748,7 +748,10 @@ initialization
end.
{
$Log$
Revision 1.7 2004-01-20 21:02:56 florian
Revision 1.8 2004-03-02 00:36:33 olle
* big transformation of Tai_[const_]Symbol.Create[data]name*
Revision 1.7 2004/01/20 21:02:56 florian
* fixed symbol type writing for arm-linux
* fixed assembler generation for abs

View File

@ -750,7 +750,7 @@ Implementation
{ the symbol can be external
so we must use newasmsymbol and
not getasmsymbol !! PM }
ps:=objectlibrary.newasmsymbol(copy(s,1,j-1));
ps:=objectlibrary.newasmsymbol(copy(s,1,j-1),AB_EXTERNAL,AT_FUNCTION);
if not assigned(ps) then
internalerror(33006)
else
@ -860,7 +860,7 @@ Implementation
else
curr_n:=n_includefile;
{ get symbol for this includefile }
hp:=objectlibrary.newasmsymboltype('Ltext'+ToStr(IncludeCount),AB_LOCAL,AT_FUNCTION);
hp:=objectlibrary.newasmsymbol('Ltext'+ToStr(IncludeCount),AB_LOCAL,AT_FUNCTION);
if currpass=1 then
begin
hp.setaddress(currpass,objectalloc.currsec,objectalloc.sectionsize,0);
@ -912,7 +912,7 @@ Implementation
exit;
store_sec:=objectalloc.currsec;
objectalloc.seTSection(sec_code);
hp:=objectlibrary.newasmsymboltype('Letext',AB_LOCAL,AT_FUNCTION);
hp:=objectlibrary.newasmsymbol('Letext',AB_LOCAL,AT_FUNCTION);
if currpass=1 then
begin
hp.setaddress(currpass,objectalloc.currsec,objectalloc.sectionsize,0);
@ -1659,7 +1659,10 @@ Implementation
end.
{
$Log$
Revision 1.62 2004-02-27 10:21:05 florian
Revision 1.63 2004-03-02 00:36:33 olle
* big transformation of Tai_[const_]Symbol.Create[data]name*
Revision 1.62 2004/02/27 10:21:05 florian
* top_symbol killed
+ refaddr to treference added
+ refsymbol to treference added

View File

@ -1878,7 +1878,7 @@ implementation
paraloc2:=paramanager.getintparaloc(pocall_default,2);
if (cs_check_object in aktlocalswitches) then
begin
reference_reset_symbol(hrefvmt,objectlibrary.newasmsymboldata(objdef.vmt_mangledname),0);
reference_reset_symbol(hrefvmt,objectlibrary.newasmsymbol(objdef.vmt_mangledname,AB_EXTERNAL,AT_DATA),0);
paramanager.allocparaloc(list,paraloc2);
a_paramaddr_ref(list,hrefvmt,paraloc2);
paramanager.allocparaloc(list,paraloc1);
@ -2109,7 +2109,10 @@ finalization
end.
{
$Log$
Revision 1.159 2004-02-27 10:21:05 florian
Revision 1.160 2004-03-02 00:36:33 olle
* big transformation of Tai_[const_]Symbol.Create[data]name*
Revision 1.159 2004/02/27 10:21:05 florian
* top_symbol killed
+ refaddr to treference added
+ refsymbol to treference added

View File

@ -196,7 +196,7 @@ begin
if not(assigned(resourcestringlist)) then
resourcestringlist:=taasmoutput.create;
resourcestringlist.insert(tai_const.create_32bit(resstrcount));
resourcestringlist.insert(tai_symbol.createdataname_global(make_mangledname('RESOURCESTRINGLIST',current_module.localsymtable,''),0));
resourcestringlist.insert(tai_symbol.createname_global(make_mangledname('RESOURCESTRINGLIST',current_module.localsymtable,''),AT_DATA,0));
resourcestringlist.insert(tai_align.Create(const_align(pointer_size)));
R:=TResourceStringItem(List.First);
While assigned(R) do
@ -300,7 +300,10 @@ end;
end.
{
$Log$
Revision 1.21 2004-02-26 16:16:38 peter
Revision 1.22 2004-03-02 00:36:33 olle
* big transformation of Tai_[const_]Symbol.Create[data]name*
Revision 1.21 2004/02/26 16:16:38 peter
* tai_const.create_ptr added
Revision 1.20 2003/12/29 19:31:20 florian

View File

@ -809,7 +809,7 @@ uses
typ:=tasmsymtype(ppufile.getbyte);
case asmsymtype of
1 :
librarydata.asmsymbolidx^[i-1]:=librarydata.newasmsymboltype(name,bind,typ);
librarydata.asmsymbolidx^[i-1]:=librarydata.newasmsymbol(name,bind,typ);
2 :
librarydata.asmsymbolidx^[i-1]:=librarydata.newasmlabel(labelnr,false,false);
3 :
@ -1514,7 +1514,10 @@ uses
end.
{
$Log$
Revision 1.52 2004-02-03 16:14:13 peter
Revision 1.53 2004-03-02 00:36:33 olle
* big transformation of Tai_[const_]Symbol.Create[data]name*
Revision 1.52 2004/02/03 16:14:13 peter
* fix remembering path of main source file
Revision 1.51 2004/01/26 16:12:27 daniel

View File

@ -168,9 +168,9 @@ begin
make_global:=true;
if make_global then
exprasmList.concat(Tai_symbol.Createname_global(labelname,0))
exprasmList.concat(Tai_symbol.Createname_global(labelname,AT_FUNCTION,0))
else
exprasmList.concat(Tai_symbol.Createname(labelname,0));
exprasmList.concat(Tai_symbol.Createname(labelname,AT_FUNCTION,0));
{ set param1 interface to self }
adjustselfvalue(procdef,ioffset);
@ -223,7 +223,7 @@ begin
{ case 0 }
else
begin
lab:=objectlibrary.newasmsymbol(procdef.mangledname);
lab:=objectlibrary.newasmsymbol(procdef.mangledname,AB_EXTERNAL,AT_FUNCTION);
emit_sym(A_JMP,S_NO,lab);
end;
@ -238,7 +238,10 @@ initialization
end.
{
$Log$
Revision 1.31 2004-02-27 13:42:52 olle
Revision 1.32 2004-03-02 00:36:33 olle
* big transformation of Tai_[const_]Symbol.Create[data]name*
Revision 1.31 2004/02/27 13:42:52 olle
+ added Tai_symbol_end
Revision 1.30 2004/02/27 10:21:05 florian

View File

@ -1378,7 +1378,7 @@ Unit Ra386int;
begin
oper.opr.typ:=OPR_SYMBOL;
oper.opr.symofs:=l;
oper.opr.symbol:=objectlibrary.newasmsymbol(tempstr);
oper.opr.symbol:=objectlibrary.newasmsymbol(tempstr,AB_EXTERNAL,AT_FUNCTION);
end
else
begin
@ -1977,7 +1977,10 @@ begin
end.
{
$Log$
Revision 1.69 2004-01-14 23:39:05 florian
Revision 1.70 2004-03-02 00:36:33 olle
* big transformation of Tai_[const_]Symbol.Create[data]name*
Revision 1.69 2004/01/14 23:39:05 florian
* another bunch of x86-64 fixes mainly calling convention and
assembler reader related

View File

@ -211,7 +211,7 @@ unit cgcpu;
procedure tcg68k.a_call_name(list : taasmoutput;const s : string);
begin
list.concat(taicpu.op_sym(A_JSR,S_NO,objectlibrary.newasmsymbol(s)));
list.concat(taicpu.op_sym(A_JSR,S_NO,objectlibrary.newasmsymbol(s,AB_EXTERNAL,AT_FUNCTION)));
end;
@ -1271,7 +1271,10 @@ end.
{
$Log$
Revision 1.21 2004-01-30 12:17:18 florian
Revision 1.22 2004-03-02 00:36:33 olle
* big transformation of Tai_[const_]Symbol.Create[data]name*
Revision 1.21 2004/01/30 12:17:18 florian
* fixed some m68k compilation problems
Revision 1.20 2003/04/27 11:21:36 peter

View File

@ -1448,7 +1448,7 @@ type
l:=opr.val;
opr.typ := OPR_SYMBOL;
opr.symofs := l;
opr.symbol := objectlibrary.newasmsymbol(tempstr);
opr.symbol := objectlibrary.newasmsymbol(tempstr,AB_EXTERNAL,AT_FUNCTION);
end;
end;
{ // Constant memory offset . // }
@ -1523,7 +1523,7 @@ type
Begin
{ not found, finally ... add it anyways ... }
Message1(asmr_w_id_supposed_external,expr);
opr.ref.symbol:=objectlibrary.newasmsymbol(expr);
opr.ref.symbol:=objectlibrary.newasmsymbol(expr,AB_EXTERNAL,AT_FUNCTION);
end;
end
else
@ -2269,7 +2269,10 @@ Begin
end.
{
$Log$
Revision 1.13 2003-02-19 22:00:16 daniel
Revision 1.14 2004-03-02 00:36:33 olle
* big transformation of Tai_[const_]Symbol.Create[data]name*
Revision 1.13 2003/02/19 22:00:16 daniel
* Code generator converted to new register notation
- Horribily outdated todo.txt removed

View File

@ -2140,10 +2140,10 @@ option_help_pages=11025_[
**2Sp_same as -Mgpc
**2Ss_constructor name must be init (destructor must be done)
**2St_allow static keyword in objects
**1s_don't call assembler and linker (only with -a)
**1s_don't call assembler and linker
**2sh_Generate script to link on host
**2sr_Skip register allocation phase (optimizations will be disabled)
**2st_Generate script to link on target
**2sr_Skip register allocation phase (optimizations will be disabled)
**1u<x>_undefines the symbol <x>
**1U_unit options:
**2Un_don't check the unit name

View File

@ -633,7 +633,7 @@ const
option_info=11024;
option_help_pages=11025;
MsgTxtSize = 36001;
MsgTxtSize = 35986;
MsgIdxMax : array[1..20] of longint=(
17,63,197,53,57,44,99,20,35,60,

View File

@ -1,7 +1,7 @@
{$ifdef Delphi}
const msgtxt : array[0..000150] of string[240]=(
const msgtxt : array[0..000149] of string[240]=(
{$else Delphi}
const msgtxt : array[0..000150,1..240] of char=(
const msgtxt : array[0..000149,1..240] of char=(
{$endif Delphi}
'01000_T_Compiler: $1'#000+
'01001_D_Compiler OS: $1'#000+
@ -773,100 +773,100 @@ const msgtxt : array[0..000150,1..240] of char=(
'**','2Sp_same as -Mgpc'#010+
'**2Ss_constructor name must be init (destructor must be done)'#010+
'**2St_allow static keyword in objects'#010+
'**1s_don'#039't call assembler and linker (only with -a)'#010+
'**1s_don'#039't call assembler and linker'#010+
'**2sh_Generate script to link on host'#010+
'**2sr_Skip register allocation p','hase (optimizations will be disabled'+
')'#010+
'**2st_Generate script to link on target'#010+
'**2sr_S','kip register allocation phase (optimizations will be disabled'+
')'#010+
'**1u<x>_undefines the symbol <x>'#010+
'**1U_unit options:'#010+
'**2Un_don'#039't check the unit name'#010+
'**2Ur_generate release unit files'#010+
'**2Us_compile a system unit'#010+
'**1v<x>_Be verbo','se. <x> is a combination of the following letters:'#010+
'**1v<x>_Be verbose. <x> is a co','mbination of the following letters:'#010+
'**2*_e : Show errors (default) d : Show debug info'#010+
'**2*_w : Show warnings u : Show unit info'#010+
'**2*_n : Show notes t : Show tried/used files'#010+
'**2*_h : Show',' hints m : Show defined macros'#010+
'**2*_h : Show hints ',' m : Show defined macros'#010+
'**2*_i : Show general info p : Show compiled procedures'#010+
'**2*_l : Show linenumbers c : Show conditionals'#010+
'**2*_a : Show everything 0 : Show nothing (except error','s'+
')'#010+
'**2*_b : Show all procedure r : Rhide/GCC compatibility mode'#010+
'**2*_a : Show everything 0 : Show nothing (except errors)'#010+
'**2*_b : Sho','w all procedure r : Rhide/GCC compatibility mod'+
'e'#010+
'**2*_ declarations if an error x : Executable info (Win32 only)'#010+
'**2*_ occurs'#010+
'**1V_write fpcdebug.txt file with lots of debugging info'#010+
'**1X_executable options:',#010+
'*L2Xc_link with the c library'#010+
'**1X_executable options:'#010+
'*L2Xc_link wit','h the c library'#010+
'**2Xs_strip all symbols from executable'#010+
'**2XD_try to link dynamic (defines FPC_LINK_DYNAMIC)'#010+
'**2XS_try to link static (default) (defines FPC_LINK_STATIC)'#010+
'**2XX_try to link smart (defines FP','C_LINK_SMART)'#010+
'**0*_Processor specific options:'#010+
'**2XX_try to link smart (defines FPC_LINK_SMART)'#010+
'*','*0*_Processor specific options:'#010+
'3*1A<x>_output format:'#010+
'3*2Aas_assemble using GNU AS'#010+
'3*2Anasmcoff_coff (Go32v2) file using Nasm'#010+
'3*2Anasmelf_elf32 (Linux) file using Nasm'#010+
'3*2Awasm_obj file using Wasm (Watcom)'#010+
'3*2Anasmobj_obj fi','le using Nasm'#010+
'3*2Amasm_obj file using Masm (Microsoft)'#010+
'3*2Anasmobj_obj file using Nasm'#010+
'3','*2Amasm_obj file using Masm (Microsoft)'#010+
'3*2Atasm_obj file using Tasm (Borland)'#010+
'3*2Acoff_coff (Go32v2) using internal writer'#010+
'3*2Apecoff_pecoff (Win32) using internal writer'#010+
'3*1R<x>_assembler reading style:'#010+
'3*2Ratt_read AT&T st','yle assembler'#010+
'3*2Rintel_read Intel style assembler'#010+
'3*2Ratt_read AT&T style assembler'#010+
'3','*2Rintel_read Intel style assembler'#010+
'3*2Rdirect_copy assembler text directly to assembler file'#010+
'3*1O<x>_optimizations:'#010+
'3*2Og_generate smaller code'#010+
'3*2OG_generate faster code (default)'#010+
'3*2Or_keep certain variables in registers'#010+
'3','*2Ou_enable uncertain optimizations (see docs)'#010+
'3*2Ou_enable unc','ertain optimizations (see docs)'#010+
'3*2O1_level 1 optimizations (quick optimizations)'#010+
'3*2O2_level 2 optimizations (-O1 + slower optimizations)'#010+
'3*2O3_level 3 optimizations (-O2 repeatedly, max 5 times)'#010+
'3*2Op<x>_target processor:'#010+
'3','*3Op1_set target processor to 386/486'#010+
'3*3Op1_set targe','t processor to 386/486'#010+
'3*3Op2_set target processor to Pentium/PentiumMMX (tm)'#010+
'3*3Op3_set target processor to PPro/PII/c6x86/K6 (tm)'#010+
'3*1T<x>_Target operating system:'#010+
'3*2Temx_OS/2 via EMX (including EMX/RSX extender)'#010+
'3*2Tgo32v2','_Version 2 of DJ Delorie DOS extender'#010+
'3*2Tgo32v2_Version 2 of D','J Delorie DOS extender'#010+
'3*2Tlinux_Linux'#010+
'3*2Tnetware_Novell Netware Module (clib)'#010+
'3*2Tos2_OS/2 / eComStation'#010+
'3*2Tsunos_SunOS/Solaris'#010+
'3*2Twatcom_Watcom compatible DOS extender'#010+
'3*2Twdosx_WDOSX DOS extender'#010+
'3*2Twin32_Windows 32 Bi','t'#010+
'3*1W<x>_Win32-like target options'#010+
'3*2Twin32_Windows 32 Bit'#010+
'3*1W<x>_Win32','-like target options'#010+
'3*2WB<x>_Set Image base to Hexadecimal <x> value'#010+
'3*2WC_Specify console type application'#010+
'3*2WD_Use DEFFILE to export functions of DLL or EXE'#010+
'3*2WF_Specify full-screen type application (OS/2 only)'#010+
'3*2WG_Spe','cify graphic type application'#010+
'3*2WG_Specify graphic ty','pe application'#010+
'3*2WN_Do not generate relocation code (necessary for debugging)'#010+
'3*2WR_Generate relocation code'#010+
'6*1A<x>_output format'#010+
'6*2Aas_Unix o-file using GNU AS'#010+
'6*2Agas_GNU Motorola assembler'#010+
'6*2Amit_MIT Syntax (old GAS)'#010+
'6','*2Amot_Standard Motorola assembler'#010+
'6*2Amot_Standard',' Motorola assembler'#010+
'6*1O_optimizations:'#010+
'6*2Oa_turn on the optimizer'#010+
'6*2Og_generate smaller code'#010+
'6*2OG_generate faster code (default)'#010+
'6*2Ox_optimize maximum (still BUGGY!!!)'#010+
'6*2O0_set target processor to a MC68000'#010+
'6*2O2_set ta','rget processor to a MC68020+ (default)'#010+
'6*2O2_set target processor ','to a MC68020+ (default)'#010+
'6*1R<x>_assembler reading style:'#010+
'6*2RMOT_read motorola style assembler'#010+
'6*1T<x>_Target operating system:'#010+
'6*2Tamiga_Commodore Amiga'#010+
'6*2Tatari_Atari ST/STe/TT'#010+
'6*2Tlinux_Linux-68k'#010+
'6*2Tmacos_Macintosh m68k'#010,
'6*2Tpalmos_PalmOS'#010+
'6*2Tmacos_Macintosh m68k'#010+
'6*2Tpalmos_Palm','OS'#010+
'P*1T<x>_Target operating system:'#010+
'P*2Tdarwin_Darwin and MacOS X on PowerPC'#010+
'P*2Tlinux_Linux on PowerPC'#010+
@ -874,5 +874,5 @@ const msgtxt : array[0..000150,1..240] of char=(
'P*2Tmorphos_MorphOS '#010+
'**1*_'#010+
'**1?_shows this help'#010+
'**1h_shows this help without waiting',#000
'**1h_shows this help without waiting'#000
);

View File

@ -132,7 +132,7 @@ interface
(str_length(left)=0) then
begin
reference_reset(hr);
hr.symbol:=objectlibrary.newasmsymboldata('FPC_EMPTYCHAR');
hr.symbol:=objectlibrary.newasmsymbol('FPC_EMPTYCHAR',AB_EXTERNAL,AT_DATA);
location.register:=cg.getaddressregister(exprasmlist);
cg.a_loadaddr_ref_reg(exprasmlist,hr,location.register);
end
@ -153,7 +153,7 @@ interface
(str_length(left)=0) then
begin
reference_reset(hr);
hr.symbol:=objectlibrary.newasmsymboldata('FPC_EMPTYCHAR');
hr.symbol:=objectlibrary.newasmsymbol('FPC_EMPTYCHAR',AB_EXTERNAL,AT_DATA);
location.register:=cg.getaddressregister(exprasmlist);
cg.a_loadaddr_ref_reg(exprasmlist,hr,location.register);
end
@ -410,7 +410,7 @@ interface
end;
cg.a_cmp_const_reg_label(exprasmlist,OS_ADDR,OC_NE,0,location.register,l1);
reference_reset(hr);
hr.symbol:=objectlibrary.newasmsymboldata('FPC_EMPTYCHAR');
hr.symbol:=objectlibrary.newasmsymbol('FPC_EMPTYCHAR',AB_EXTERNAL,AT_DATA);
cg.a_loadaddr_ref_reg(exprasmlist,hr,location.register);
cg.a_label(exprasmlist,l1);
end;
@ -535,7 +535,10 @@ end.
{
$Log$
Revision 1.55 2004-02-27 10:21:05 florian
Revision 1.56 2004-03-02 00:36:33 olle
* big transformation of Tai_[const_]Symbol.Create[data]name*
Revision 1.55 2004/02/27 10:21:05 florian
* top_symbol killed
+ refaddr to treference added
+ refsymbol to treference added

View File

@ -1165,7 +1165,7 @@ implementation
objectlibrary.getlabel(nextonlabel);
{ send the vmt parameter }
reference_reset_symbol(href2,objectlibrary.newasmsymboldata(excepttype.vmt_mangledname),0);
reference_reset_symbol(href2,objectlibrary.newasmsymbol(excepttype.vmt_mangledname,AB_EXTERNAL,AT_DATA),0);
paraloc1:=paramanager.getintparaloc(pocall_default,1);
paramanager.allocparaloc(exprasmlist,paraloc1);
cg.a_paramaddr_ref(exprasmlist,href2,paraloc1);
@ -1462,7 +1462,10 @@ begin
end.
{
$Log$
Revision 1.93 2004-02-27 10:21:05 florian
Revision 1.94 2004-03-02 00:36:33 olle
* big transformation of Tai_[const_]Symbol.Create[data]name*
Revision 1.93 2004/02/27 10:21:05 florian
* top_symbol killed
+ refaddr to treference added
+ refsymbol to treference added

View File

@ -248,7 +248,7 @@ implementation
if left.nodetype=typen then
begin
hregister:=cg.getaddressregister(exprasmlist);
reference_reset_symbol(href,objectlibrary.newasmsymboldata(tobjectdef(left.resulttype.def).vmt_mangledname),0);
reference_reset_symbol(href,objectlibrary.newasmsymbol(tobjectdef(left.resulttype.def).vmt_mangledname,AB_EXTERNAL,AT_DATA),0);
cg.a_loadaddr_ref_reg(exprasmlist,href,hregister);
end
else
@ -678,7 +678,10 @@ end.
{
$Log$
Revision 1.55 2004-02-27 10:21:05 florian
Revision 1.56 2004-03-02 00:36:33 olle
* big transformation of Tai_[const_]Symbol.Create[data]name*
Revision 1.55 2004/02/27 10:21:05 florian
* top_symbol killed
+ refaddr to treference added
+ refsymbol to treference added

View File

@ -91,7 +91,7 @@ implementation
location.reference.offset:=tabsolutesym(symtableentry).fieldoffset;
end;
toasm :
location.reference.symbol:=objectlibrary.newasmsymboldata(tabsolutesym(symtableentry).mangledname);
location.reference.symbol:=objectlibrary.newasmsymbol(tabsolutesym(symtableentry).mangledname,AB_EXTERNAL,AT_DATA);
else
internalerror(200310283);
end;
@ -101,7 +101,7 @@ implementation
if tconstsym(symtableentry).consttyp=constresourcestring then
begin
location_reset(location,LOC_CREFERENCE,OS_ADDR);
location.reference.symbol:=objectlibrary.newasmsymboldata(make_mangledname('RESOURCESTRINGLIST',tconstsym(symtableentry).owner,''));
location.reference.symbol:=objectlibrary.newasmsymbol(make_mangledname('RESOURCESTRINGLIST',tconstsym(symtableentry).owner,''),AB_EXTERNAL,AT_DATA);
location.reference.offset:=tconstsym(symtableentry).resstrindex*16+8;
end
else
@ -116,20 +116,20 @@ implementation
{ C variable }
if (vo_is_C_var in tvarsym(symtableentry).varoptions) then
begin
location.reference.symbol:=objectlibrary.newasmsymboldata(tvarsym(symtableentry).mangledname);
location.reference.symbol:=objectlibrary.newasmsymbol(tvarsym(symtableentry).mangledname,AB_EXTERNAL,AT_DATA);
end
{ DLL variable }
else if (vo_is_dll_var in tvarsym(symtableentry).varoptions) then
begin
hregister:=cg.getaddressregister(exprasmlist);
location.reference.symbol:=objectlibrary.newasmsymboldata(tvarsym(symtableentry).mangledname);
location.reference.symbol:=objectlibrary.newasmsymbol(tvarsym(symtableentry).mangledname,AB_EXTERNAL,AT_DATA);
cg.a_load_ref_reg(exprasmlist,OS_ADDR,OS_ADDR,location.reference,hregister);
reference_reset_base(location.reference,hregister,0);
end
{ external variable }
else if (vo_is_external in tvarsym(symtableentry).varoptions) then
begin
location.reference.symbol:=objectlibrary.newasmsymboldata(tvarsym(symtableentry).mangledname);
location.reference.symbol:=objectlibrary.newasmsymbol(tvarsym(symtableentry).mangledname,AB_EXTERNAL,AT_DATA);
end
{ thread variable }
else if (vo_is_thread_var in tvarsym(symtableentry).varoptions) then
@ -149,12 +149,12 @@ implementation
{ make sure hregister can't allocate the register necessary for the parameter }
paraloc1:=paramanager.getintparaloc(pocall_default,1);
hregister:=cg.getaddressregister(exprasmlist);
reference_reset_symbol(href,objectlibrary.newasmsymboldata('FPC_THREADVAR_RELOCATE'),0);
reference_reset_symbol(href,objectlibrary.newasmsymbol('FPC_THREADVAR_RELOCATE',AB_EXTERNAL,AT_DATA),0);
cg.a_load_ref_reg(exprasmlist,OS_ADDR,OS_ADDR,href,hregister);
cg.ungetregister(exprasmlist,hregister);
cg.a_cmp_const_reg_label(exprasmlist,OS_ADDR,OC_EQ,0,hregister,norelocatelab);
{ don't save the allocated register else the result will be destroyed later }
reference_reset_symbol(href,objectlibrary.newasmsymboldata(tvarsym(symtableentry).mangledname),0);
reference_reset_symbol(href,objectlibrary.newasmsymbol(tvarsym(symtableentry).mangledname,AB_EXTERNAL,AT_DATA),0);
paramanager.allocparaloc(exprasmlist,paraloc1);
cg.a_param_ref(exprasmlist,OS_ADDR,href,paraloc1);
paramanager.freeparaloc(exprasmlist,paraloc1);
@ -171,7 +171,7 @@ implementation
layout of a threadvar is (4 bytes pointer):
0 - Threadvar index
4 - Threadvar value in single threading }
reference_reset_symbol(href,objectlibrary.newasmsymboldata(tvarsym(symtableentry).mangledname),POINTER_SIZE);
reference_reset_symbol(href,objectlibrary.newasmsymbol(tvarsym(symtableentry).mangledname,AB_EXTERNAL,AT_DATA),POINTER_SIZE);
cg.a_loadaddr_ref_reg(exprasmlist,href,hregister);
cg.a_label(exprasmlist,endrelocatelab);
location.reference.base:=hregister;
@ -227,10 +227,10 @@ implementation
if cs_create_pic in aktmoduleswitches then
begin
location.reference.base:=current_procinfo.got;
location.reference.symbol:=objectlibrary.newasmsymboldata(tvarsym(symtableentry).mangledname+'@GOT');
location.reference.symbol:=objectlibrary.newasmsymbol(tvarsym(symtableentry).mangledname+'@GOT',AB_EXTERNAL,AT_DATA);
end
else
location.reference.symbol:=objectlibrary.newasmsymboldata(tvarsym(symtableentry).mangledname);
location.reference.symbol:=objectlibrary.newasmsymbol(tvarsym(symtableentry).mangledname,AB_EXTERNAL,AT_DATA);
end;
stt_exceptsymtable:
begin
@ -343,7 +343,7 @@ implementation
{ we don't use the hregister }
cg.ungetregister(exprasmlist,hregister);
{ load address of the function }
reference_reset_symbol(href,objectlibrary.newasmsymbol(procdef.mangledname),0);
reference_reset_symbol(href,objectlibrary.newasmsymbol(procdef.mangledname,AB_EXTERNAL,AT_FUNCTION),0);
hregister:=cg.getaddressregister(exprasmlist);
cg.a_loadaddr_ref_reg(exprasmlist,href,hregister);
cg.a_load_reg_ref(exprasmlist,OS_ADDR,OS_ADDR,hregister,location.reference);
@ -353,12 +353,12 @@ implementation
else
begin
{!!!!! Be aware, work on virtual methods too }
location.reference.symbol:=objectlibrary.newasmsymbol(procdef.mangledname);
location.reference.symbol:=objectlibrary.newasmsymbol(procdef.mangledname,AB_EXTERNAL,AT_FUNCTION);
end;
end;
typedconstsym :
begin
location.reference.symbol:=objectlibrary.newasmsymboldata(ttypedconstsym(symtableentry).mangledname);
location.reference.symbol:=objectlibrary.newasmsymbol(ttypedconstsym(symtableentry).mangledname,AB_EXTERNAL,AT_DATA);
end;
else internalerror(4);
end;
@ -908,7 +908,10 @@ begin
end.
{
$Log$
Revision 1.112 2004-02-27 10:21:05 florian
Revision 1.113 2004-03-02 00:36:33 olle
* big transformation of Tai_[const_]Symbol.Create[data]name*
Revision 1.112 2004/02/27 10:21:05 florian
* top_symbol killed
+ refaddr to treference added
+ refsymbol to treference added

View File

@ -163,7 +163,7 @@ implementation
else
begin
reference_reset_symbol(href,
objectlibrary.newasmsymboldata(tobjectdef(tclassrefdef(resulttype.def).pointertype.def).vmt_mangledname),0);
objectlibrary.newasmsymbol(tobjectdef(tclassrefdef(resulttype.def).pointertype.def).vmt_mangledname,AB_EXTERNAL,AT_DATA),0);
location.register:=cg.getaddressregister(exprasmlist);
cg.a_loadaddr_ref_reg(exprasmlist,href,location.register);
end;
@ -882,7 +882,10 @@ begin
end.
{
$Log$
Revision 1.88 2004-02-27 10:21:05 florian
Revision 1.89 2004-03-02 00:36:33 olle
* big transformation of Tai_[const_]Symbol.Create[data]name*
Revision 1.88 2004/02/27 10:21:05 florian
* top_symbol killed
+ refaddr to treference added
+ refsymbol to treference added

View File

@ -786,7 +786,7 @@ implementation
end;
end
else
reference_reset_symbol(href,objectlibrary.newasmsymboldata(tvarsym(p).mangledname),0);
reference_reset_symbol(href,objectlibrary.newasmsymbol(tvarsym(p).mangledname,AB_EXTERNAL,AT_DATA),0);
cg.g_initialize(list,tvarsym(p).vartype.def,href,false);
end;
end;
@ -818,7 +818,7 @@ implementation
end;
end
else
reference_reset_symbol(href,objectlibrary.newasmsymboldata(tvarsym(p).mangledname),0);
reference_reset_symbol(href,objectlibrary.newasmsymbol(tvarsym(p).mangledname,AB_EXTERNAL,AT_DATA),0);
cg.g_finalize(list,tvarsym(p).vartype.def,href,false);
end;
end;
@ -827,7 +827,7 @@ implementation
if ttypedconstsym(p).is_writable and
ttypedconstsym(p).typedconsttype.def.needs_inittable then
begin
reference_reset_symbol(href,objectlibrary.newasmsymboldata(ttypedconstsym(p).mangledname),0);
reference_reset_symbol(href,objectlibrary.newasmsymbol(ttypedconstsym(p).mangledname,AB_EXTERNAL,AT_DATA),0);
cg.g_finalize(list,ttypedconstsym(p).typedconsttype.def,href,false);
end;
end;
@ -1280,12 +1280,12 @@ implementation
if (target_info.system in [system_i386_win32,system_i386_wdosx]) and
(cs_profile in aktmoduleswitches) then
begin
reference_reset_symbol(href,objectlibrary.newasmsymboldata('etext'),0);
reference_reset_symbol(href,objectlibrary.newasmsymbol('etext',AB_EXTERNAL,AT_DATA),0);
paraloc1:=paramanager.getintparaloc(pocall_default,1);
paraloc2:=paramanager.getintparaloc(pocall_default,2);
paramanager.allocparaloc(list,paraloc2);
cg.a_paramaddr_ref(list,href,paraloc2);
reference_reset_symbol(href,objectlibrary.newasmsymboldata('__image_base__'),0);
reference_reset_symbol(href,objectlibrary.newasmsymbol('__image_base__',AB_EXTERNAL,AT_DATA),0);
paramanager.allocparaloc(list,paraloc1);
cg.a_paramaddr_ref(list,href,paraloc1);
paramanager.freeparaloc(list,paraloc2);
@ -1359,9 +1359,9 @@ implementation
{$endif GDB}
if (cs_profile in aktmoduleswitches) or
(po_public in current_procinfo.procdef.procoptions) then
list.concat(Tai_symbol.createname_global(hs,0))
list.concat(Tai_symbol.createname_global(hs,AT_FUNCTION,0))
else
list.concat(Tai_symbol.createname(hs,0));
list.concat(Tai_symbol.createname(hs,AT_FUNCTION,0));
until false;
end;
@ -1797,9 +1797,9 @@ implementation
(assigned(current_procinfo) and
(current_procinfo.procdef.proccalloption=pocall_inline)) or
DLLSource then
curconstSegment.concat(Tai_symbol.Createdataname_global(sym.mangledname,l))
curconstSegment.concat(Tai_symbol.Createname_global(sym.mangledname,AT_DATA,l))
else
curconstSegment.concat(Tai_symbol.Createdataname(sym.mangledname,l));
curconstSegment.concat(Tai_symbol.Createname(sym.mangledname,AT_DATA,l));
aktfilepos:=storefilepos;
end;
@ -2141,7 +2141,10 @@ implementation
end.
{
$Log$
Revision 1.194 2004-02-27 10:21:05 florian
Revision 1.195 2004-03-02 00:36:33 olle
* big transformation of Tai_[const_]Symbol.Create[data]name*
Revision 1.194 2004/02/27 10:21:05 florian
* top_symbol killed
+ refaddr to treference added
+ refsymbol to treference added

View File

@ -304,7 +304,7 @@ implementation
{ write name label }
dataSegment.concat(Tai_const_symbol.Create(p^.nl));
dataSegment.concat(Tai_const_symbol.Createname(p^.data.mangledname));
dataSegment.concat(Tai_const_symbol.Createname(p^.data.mangledname,AT_FUNCTION,0));
if assigned(p^.r) then
writestrentry(p^.r);
@ -345,7 +345,7 @@ implementation
{ write name label }
dataSegment.concat(Tai_const.Create_32bit(p^.data.messageinf.i));
dataSegment.concat(Tai_const_symbol.Createname(p^.data.mangledname));
dataSegment.concat(Tai_const_symbol.Createname(p^.data.mangledname,AT_FUNCTION,0));
if assigned(p^.r) then
writeintentry(p^.r);
@ -420,7 +420,7 @@ implementation
begin
if assigned(p^.l) then
writedmtaddressentry(p^.l);
dataSegment.concat(Tai_const_symbol.Createname(p^.data.mangledname));
dataSegment.concat(Tai_const_symbol.Createname(p^.data.mangledname,AT_FUNCTION,0));
if assigned(p^.r) then
writedmtaddressentry(p^.r);
end;
@ -490,7 +490,7 @@ implementation
Consts.concat(Tai_string.Create(p.name));
dataSegment.concat(Tai_const_symbol.Create(l));
dataSegment.concat(Tai_const_symbol.Createname(hp.mangledname));
dataSegment.concat(Tai_const_symbol.Createname(hp.mangledname,AT_FUNCTION,0));
end;
end;
@ -854,9 +854,9 @@ implementation
implintf:=_class.implementedinterfaces;
curintf:=implintf.interfaces(intfindex);
if (cs_create_smart in aktmoduleswitches) then
rawdata.concat(Tai_symbol.Createname_global(gintfgetvtbllabelname(intfindex),0))
rawdata.concat(Tai_symbol.Createname_global(gintfgetvtbllabelname(intfindex),AT_FUNCTION,0))
else
rawdata.concat(Tai_symbol.Createname(gintfgetvtbllabelname(intfindex),0));
rawdata.concat(Tai_symbol.Createname(gintfgetvtbllabelname(intfindex),AT_FUNCTION,0));
proccount:=implintf.implproccount(intfindex);
for i:=1 to proccount do
begin
@ -866,7 +866,7 @@ implementation
{ create wrapper code }
cgintfwrapper(rawcode,implintf.implprocs(intfindex,i),tmps,implintf.ioffsets(intfindex)^);
{ create reference }
rawdata.concat(Tai_const_symbol.Createname(tmps));
rawdata.concat(Tai_const_symbol.Createname(tmps,AT_FUNCTION,0));
end;
end;
@ -900,7 +900,7 @@ implementation
dataSegment.concat(Tai_const.Create_ptr(0)); { nil }
end;
{ VTable }
dataSegment.concat(Tai_const_symbol.Createname(gintfgetvtbllabelname(contintfindex)));
dataSegment.concat(Tai_const_symbol.Createname(gintfgetvtbllabelname(contintfindex),AT_FUNCTION,0));
{ IOffset field }
dataSegment.concat(Tai_const.Create_32bit(implintf.ioffsets(contintfindex)^));
{ IIDStr }
@ -1155,7 +1155,7 @@ implementation
begin
if (cs_create_smart in aktmoduleswitches) then
dataSegment.concat(Tai_cut.Create);
dataSegment.concat(Tai_symbol.Createname_global(make_mangledname('IID',_class.owner,_class.objname^),0));
dataSegment.concat(Tai_symbol.Createname_global(make_mangledname('IID',_class.owner,_class.objname^),AT_FUNCTION,0));
dataSegment.concat(Tai_const.Create_32bit(_class.iidguid^.D1));
dataSegment.concat(Tai_const.Create_16bit(_class.iidguid^.D2));
dataSegment.concat(Tai_const.Create_16bit(_class.iidguid^.D3));
@ -1164,7 +1164,7 @@ implementation
end;
if (cs_create_smart in aktmoduleswitches) then
dataSegment.concat(Tai_cut.Create);
dataSegment.concat(Tai_symbol.Createname_global(make_mangledname('IIDSTR',_class.owner,_class.objname^),0));
dataSegment.concat(Tai_symbol.Createname_global(make_mangledname('IIDSTR',_class.owner,_class.objname^),AT_FUNCTION,0));
dataSegment.concat(Tai_const.Create_8bit(length(_class.iidstr^)));
dataSegment.concat(Tai_string.Create(_class.iidstr^));
end;
@ -1200,9 +1200,9 @@ implementation
{ class abstract and it's not allow to }
{ generates an instance }
if (po_abstractmethod in procdefcoll^.data.procoptions) then
List.concat(Tai_const_symbol.Createname('FPC_ABSTRACTERROR'))
List.concat(Tai_const_symbol.Createname('FPC_ABSTRACTERROR',AT_FUNCTION,0))
else
List.concat(Tai_const_symbol.createname(procdefcoll^.data.mangledname));
List.concat(Tai_const_symbol.createname(procdefcoll^.data.mangledname,AT_FUNCTION,0));
end;
end;
procdefcoll:=procdefcoll^.next;
@ -1269,7 +1269,7 @@ implementation
end;
{$endif GDB}
dataSegment.concat(tai_align.create(const_align(POINTER_SIZE)));
dataSegment.concat(Tai_symbol.Createdataname_global(_class.vmt_mangledname,0));
dataSegment.concat(Tai_symbol.Createname_global(_class.vmt_mangledname,AT_DATA,0));
{ determine the size with symtable.datasize, because }
{ size gives back 4 for classes }
@ -1290,7 +1290,7 @@ implementation
{ it is not written for parents that don't have any vmt !! }
if assigned(_class.childof) and
(oo_has_vmt in _class.childof.objectoptions) then
dataSegment.concat(Tai_const_symbol.Createname(_class.childof.vmt_mangledname))
dataSegment.concat(Tai_const_symbol.Createname(_class.childof.vmt_mangledname,AT_FUNCTION,0))
else
dataSegment.concat(Tai_const.Create_ptr(0));
@ -1380,7 +1380,10 @@ initialization
end.
{
$Log$
Revision 1.64 2004-02-27 10:21:05 florian
Revision 1.65 2004-03-02 00:36:33 olle
* big transformation of Tai_[const_]Symbol.Create[data]name*
Revision 1.64 2004/02/27 10:21:05 florian
* top_symbol killed
+ refaddr to treference added
+ refsymbol to treference added

View File

@ -39,7 +39,7 @@ implementation
cutils,cclasses,comphook,
globals,verbose,fmodule,finput,fppu,
symconst,symbase,symtype,symdef,symsym,symtable,
aasmtai,aasmcpu,
aasmtai,aasmcpu,aasmbase,
cgbase,cpuinfo,cgobj,
nbas,
link,assemble,import,export,gendef,ppu,comprsrc,
@ -167,8 +167,8 @@ implementation
{$ifdef GDB}
if assigned(debuglist) then
begin
debugList.insert(Tai_symbol.Createname('gcc2_compiled',0));
debugList.insert(Tai_symbol.Createname('fpc_compiled',0));
debugList.insert(Tai_symbol.Createname('gcc2_compiled',AT_FUNCTION,0));
debugList.insert(Tai_symbol.Createname('fpc_compiled',AT_FUNCTION,0));
fixseg(debuglist,sec_code);
end;
{$endif GDB}
@ -188,7 +188,7 @@ implementation
begin
If (hp.u.flags and uf_threadvars)=uf_threadvars then
begin
ltvTables.concat(Tai_const_symbol.Createdataname(make_mangledname('THREADVARLIST',hp.u.globalsymtable,'')));
ltvTables.concat(Tai_const_symbol.Createname(make_mangledname('THREADVARLIST',hp.u.globalsymtable,''),AT_DATA,0));
inc(count);
end;
hp:=tused_unit(hp.next);
@ -196,12 +196,12 @@ implementation
{ Add program threadvars, if any }
If (current_module.flags and uf_threadvars)=uf_threadvars then
begin
ltvTables.concat(Tai_const_symbol.Createdataname(make_mangledname('THREADVARLIST',current_module.localsymtable,'')));
ltvTables.concat(Tai_const_symbol.Createname(make_mangledname('THREADVARLIST',current_module.localsymtable,''),AT_DATA,0));
inc(count);
end;
{ TableCount }
ltvTables.insert(Tai_const.Create_32bit(count));
ltvTables.insert(Tai_symbol.Createdataname_global('FPC_THREADVARTABLES',0));
ltvTables.insert(Tai_symbol.Createname_global('FPC_THREADVARTABLES',AT_DATA,0));
ltvTables.insert(Tai_align.Create(const_align(pointer_size)));
ltvTables.concat(Tai_symbol_end.Createname('FPC_THREADVARTABLES'));
{ insert in data segment }
@ -221,7 +221,7 @@ implementation
(vo_is_thread_var in tvarsym(p).varoptions) then
begin
{ address of threadvar }
ltvTable.concat(tai_const_symbol.createdataname(tvarsym(p).mangledname));
ltvTable.concat(tai_const_symbol.Createname(tvarsym(p).mangledname,AT_DATA,0));
{ size of threadvar }
ltvTable.concat(tai_const.create_32bit(tvarsym(p).getsize));
end;
@ -241,7 +241,7 @@ implementation
begin
s:=make_mangledname('THREADVARLIST',current_module.localsymtable,'');
{ add begin and end of the list }
ltvTable.insert(tai_symbol.createdataname_global(s,0));
ltvTable.insert(tai_symbol.Createname_global(s,AT_DATA,0));
ltvTable.concat(tai_const.create_ptr(0)); { end of list marker }
ltvTable.concat(tai_symbol_end.createname(s));
if (cs_create_smart in aktmoduleswitches) then
@ -266,7 +266,7 @@ implementation
begin
If (hp.u.flags and uf_has_resources)=uf_has_resources then
begin
ResourceStringTables.concat(Tai_const_symbol.Createdataname(make_mangledname('RESOURCESTRINGLIST',hp.u.globalsymtable,'')));
ResourceStringTables.concat(Tai_const_symbol.Createname(make_mangledname('RESOURCESTRINGLIST',hp.u.globalsymtable,''),AT_DATA,0));
inc(count);
end;
hp:=tused_unit(hp.next);
@ -274,12 +274,12 @@ implementation
{ Add program resources, if any }
If ResourceStringList<>Nil then
begin
ResourceStringTables.concat(Tai_const_symbol.Createdataname(make_mangledname('RESOURCESTRINGLIST',current_module.localsymtable,'')));
ResourceStringTables.concat(Tai_const_symbol.Createname(make_mangledname('RESOURCESTRINGLIST',current_module.localsymtable,''),AT_DATA,0));
Inc(Count);
end;
{ TableCount }
ResourceStringTables.insert(Tai_const.Create_32bit(count));
ResourceStringTables.insert(Tai_symbol.Createdataname_global('FPC_RESOURCESTRINGTABLES',0));
ResourceStringTables.insert(Tai_symbol.Createname_global('FPC_RESOURCESTRINGTABLES',AT_DATA,0));
ResourceStringTables.insert(Tai_align.Create(const_align(4)));
ResourceStringTables.concat(Tai_symbol_end.Createname('FPC_RESOURCESTRINGTABLES'));
{ insert in data segment }
@ -305,11 +305,11 @@ implementation
if (hp.u.flags and (uf_init or uf_finalize))<>0 then
begin
if (hp.u.flags and uf_init)<>0 then
unitinits.concat(Tai_const_symbol.Createname(make_mangledname('INIT$',hp.u.globalsymtable,'')))
unitinits.concat(Tai_const_symbol.Createname(make_mangledname('INIT$',hp.u.globalsymtable,''),AT_FUNCTION,0))
else
unitinits.concat(Tai_const.Create_ptr(0));
if (hp.u.flags and uf_finalize)<>0 then
unitinits.concat(Tai_const_symbol.Createname(make_mangledname('FINALIZE$',hp.u.globalsymtable,'')))
unitinits.concat(Tai_const_symbol.Createname(make_mangledname('FINALIZE$',hp.u.globalsymtable,''),AT_FUNCTION,0))
else
unitinits.concat(Tai_const.Create_ptr(0));
inc(count);
@ -320,11 +320,11 @@ implementation
if (current_module.flags and (uf_init or uf_finalize))<>0 then
begin
if (current_module.flags and uf_init)<>0 then
unitinits.concat(Tai_const_symbol.Createname(make_mangledname('INIT$',current_module.localsymtable,'')))
unitinits.concat(Tai_const_symbol.Createname(make_mangledname('INIT$',current_module.localsymtable,''),AT_FUNCTION,0))
else
unitinits.concat(Tai_const.Create_ptr(0));
if (current_module.flags and uf_finalize)<>0 then
unitinits.concat(Tai_const_symbol.Createname(make_mangledname('FINALIZE$',current_module.localsymtable,'')))
unitinits.concat(Tai_const_symbol.Createname(make_mangledname('FINALIZE$',current_module.localsymtable,''),AT_FUNCTION,0))
else
unitinits.concat(Tai_const.Create_ptr(0));
inc(count);
@ -332,7 +332,7 @@ implementation
{ TableCount,InitCount }
unitinits.insert(Tai_const.Create_32bit(0));
unitinits.insert(Tai_const.Create_32bit(count));
unitinits.insert(Tai_symbol.Createdataname_global('INITFINAL',0));
unitinits.insert(Tai_symbol.Createname_global('INITFINAL',AT_DATA,0));
unitinits.insert(Tai_align.Create(const_align(4)));
unitinits.concat(Tai_symbol_end.Createname('INITFINAL'));
{ insert in data segment }
@ -379,12 +379,12 @@ implementation
if target_info.system<>system_m68k_PalmOS then
begin
dataSegment.concat(Tai_align.Create(const_align(4)));
dataSegment.concat(Tai_symbol.Createdataname_global('HEAPSIZE',4));
dataSegment.concat(Tai_symbol.Createname_global('HEAPSIZE',AT_DATA,4));
dataSegment.concat(Tai_const.Create_32bit(heapsize));
end;
{$else m68k}
dataSegment.concat(Tai_align.Create(const_align(4)));
dataSegment.concat(Tai_symbol.Createdataname_global('HEAPSIZE',4));
dataSegment.concat(Tai_symbol.Createname_global('HEAPSIZE',AT_DATA,4));
dataSegment.concat(Tai_const.Create_32bit(heapsize));
{$endif m68k}
end;
@ -394,7 +394,7 @@ implementation
begin
{ stacksize can be specified and is now simulated }
dataSegment.concat(Tai_align.Create(const_align(4)));
dataSegment.concat(Tai_symbol.Createdataname_global('__stklen',4));
dataSegment.concat(Tai_symbol.Createname_global('__stklen',AT_DATA,4));
dataSegment.concat(Tai_const.Create_32bit(stacksize));
end;
@ -1438,7 +1438,10 @@ implementation
end.
{
$Log$
Revision 1.140 2004-02-26 16:16:38 peter
Revision 1.141 2004-03-02 00:36:33 olle
* big transformation of Tai_[const_]Symbol.Create[data]name*
Revision 1.140 2004/02/26 16:16:38 peter
* tai_const.create_ptr added
Revision 1.139 2004/02/06 22:37:00 daniel

View File

@ -45,8 +45,9 @@ interface
procedure WriteFileEndInfo;
{$endif}
procedure WriteAsmFileHeader;
private
procedure GenProcedureHeader(var hp:tai);
private
procedure WriteInstruction(hp : tai);
procedure WriteProcedureHeader(var hp:tai);
procedure WriteDataExportHeader(var s:string; isGlobal, isConst:boolean);
end;
@ -108,7 +109,6 @@ var
function getreferencestring(var ref : treference) : string;
var
s : string;
begin
@ -156,7 +156,7 @@ var
if (offset=0) then
s:=s+gas_regname(base)+','+gas_regname(index)
else
internalerror(19992); // *** ???
internalerror(19992);
end
else if (base=NR_NO) and (offset=0) then
begin
@ -321,7 +321,7 @@ var
end;
end;
Function GetInstruction(hp : tai):string; {CHANGED from method to proc}
procedure TPPCMPWAssembler.WriteInstruction(hp : tai);
var op: TAsmOp;
s: string;
i: byte;
@ -346,44 +346,17 @@ var
s := s + ',';
end;
end;
if (taicpu(hp).oper[0]^.typ <> top_none) then
s:=s+getopstr_jmp(taicpu(hp).oper[0]^);
if (taicpu(hp).ops>0) and (taicpu(hp).oper[0]^.typ<>top_none) then
begin
{ first write the current contents of s, because the symbol }
{ may be 255 characters }
asmwrite(s);
s:=getopstr_jmp(taicpu(hp).oper[0]^);
end;
end
else
{ process operands }
begin
case op of
A_MFSPR:
case taicpu(hp).oper[1]^.reg of
NR_CR:
begin
op:=A_MFCR;
taicpu(hp).ops:=1;
end;
NR_LR:
begin
op:=A_MFLR;
taicpu(hp).ops:=1;
end;
else
internalerror(2002100701);
end;
A_MTSPR:
case taicpu(hp).oper[1]^.reg of
NR_CR:
begin
op:=A_MTCR;
taicpu(hp).ops:=1;
end;
NR_LR:
begin
op:=A_MTLR;
taicpu(hp).ops:=1;
end;
else
internalerror(2002100701);
end;
end;
s:=#9+gas_op2str[op];
if taicpu(hp).ops<>0 then
begin
@ -395,7 +368,7 @@ var
end;
end;
end;
GetInstruction:=s;
AsmWriteLn(s);
end;
{*** Until here is copyed from agppcgas.pp. ***}
@ -456,7 +429,7 @@ var
{****************************************************************************
PowerPC MPW Assembler
****************************************************************************}
procedure TPPCMPWAssembler.GenProcedureHeader(var hp:tai);
procedure TPPCMPWAssembler.WriteProcedureHeader(var hp:tai);
{Returns the current hp where the caller should continue from}
{For multiple entry procedures, only the last is exported as xxx[PR]
(if use_PR is set) }
@ -1079,7 +1052,7 @@ var
ait_symbol:
begin
if tai_symbol(hp).sym.typ=AT_FUNCTION then
GenProcedureHeader(hp)
WriteProcedureHeader(hp)
else if tai_symbol(hp).sym.typ=AT_DATA then
begin
s:= tai_symbol(hp).sym.name;
@ -1108,7 +1081,7 @@ var
{$endif GDB}
;
ait_instruction:
AsmWriteLn(GetInstruction(hp));
WriteInstruction(hp);
{$ifdef GDB}
ait_stabn: ;
ait_stabs: ;
@ -1386,7 +1359,10 @@ initialization
end.
{
$Log$
Revision 1.31 2004-02-27 10:21:05 florian
Revision 1.32 2004-03-02 00:36:33 olle
* big transformation of Tai_[const_]Symbol.Create[data]name*
Revision 1.31 2004/02/27 10:21:05 florian
* top_symbol killed
+ refaddr to treference added
+ refsymbol to treference added

View File

@ -305,7 +305,7 @@ const
{ MacOS: The linker on MacOS (PPCLink) inserts a call to glue code,
if it is a cross-TOC call. If so, it also replaces the NOP
with some restore code.}
list.concat(taicpu.op_sym(A_BL,objectlibrary.newasmsymbol(s)));
list.concat(taicpu.op_sym(A_BL,objectlibrary.newasmsymbol(s,AB_EXTERNAL,AT_FUNCTION)));
if target_info.system=system_powerpc_macos then
list.concat(taicpu.op_none(A_NOP));
if not(pi_do_call in current_procinfo.flags) then
@ -1074,11 +1074,11 @@ const
{ save floating-point registers
if (cs_create_pic in aktmoduleswitches) and not(usesgpr) then
begin
a_call_name(objectlibrary.newasmsymbol('_savefpr_'+tostr(ord(firstregfpu)-ord(R_F14)+14)+'_g');
a_call_name(objectlibrary.newasmsymbol('_savefpr_'+tostr(ord(firstregfpu)-ord(R_F14)+14)+'_g',AB_EXTERNAL,AT_FUNCTION));
gotgot:=true;
end
else
a_call_name(objectlibrary.newasmsymbol('_savefpr_'+tostr(ord(firstregfpu)-ord(R_F14)+14));
a_call_name(objectlibrary.newasmsymbol('_savefpr_'+tostr(ord(firstregfpu)-ord(R_F14)+14),AB_EXTERNAL,AT_FUNCTION));
}
reference_reset_base(href,NR_R12,-8);
for regcounter:=firstregfpu to RS_F31 do
@ -1100,11 +1100,11 @@ const
{
if cs_create_pic in aktmoduleswitches then
begin
a_call_name(objectlibrary.newasmsymbol('_savegpr_'+tostr(ord(firstreggpr)-ord(R_14)+14)+'_g');
a_call_name(objectlibrary.newasmsymbol('_savegpr_'+tostr(ord(firstreggpr)-ord(R_14)+14)+'_g',AB_EXTERNAL,AT_FUNCTION));
gotgot:=true;
end
else
a_call_name(objectlibrary.newasmsymbol('_savegpr_'+tostr(ord(firstreggpr)-ord(R_14)+14))
a_call_name(objectlibrary.newasmsymbol('_savegpr_'+tostr(ord(firstreggpr)-ord(R_14)+14),AB_EXTERNAL,AT_FUNCTION))
}
reference_reset_base(href,NR_R12,-4);
for regcounter2:=RS_R13 to RS_R31 do
@ -1299,7 +1299,7 @@ const
{
if (pi_do_call in current_procinfo.flags) then
a_call_name(objectlibrary.newasmsymbol('_restfpr_'+tostr(ord(firstregfpu)-ord(R_F14)+14)+
'_x')
'_x',AB_EXTERNAL,AT_FUNCTION))
else
{ leaf node => lr haven't to be restored }
a_call_name('_restfpr_'+tostr(ord(firstregfpu.enum)-ord(R_F14)+14)+
@ -2200,7 +2200,7 @@ const
p: taicpu;
begin
p := taicpu.op_sym(op,objectlibrary.newasmsymbol(l.name));
p := taicpu.op_sym(op,objectlibrary.newasmsymbol(l.name,AB_EXTERNAL,AT_FUNCTION));
if op <> A_B then
create_cond_norm(c,crval,p.condition);
p.is_jmp := true;
@ -2321,7 +2321,10 @@ begin
end.
{
$Log$
Revision 1.164 2004-02-27 10:21:05 florian
Revision 1.165 2004-03-02 00:36:33 olle
* big transformation of Tai_[const_]Symbol.Create[data]name*
Revision 1.164 2004/02/27 10:21:05 florian
* top_symbol killed
+ refaddr to treference added
+ refsymbol to treference added

View File

@ -142,9 +142,9 @@ begin
make_global:=true;
if make_global then
exprasmList.concat(Tai_symbol.Createname_global(labelname,0))
exprasmList.concat(Tai_symbol.Createname_global(labelname,AT_FUNCTION,0))
else
exprasmList.concat(Tai_symbol.Createname(labelname,0));
exprasmList.concat(Tai_symbol.Createname(labelname,AT_FUNCTION,0));
{ set param1 interface to self }
adjustselfvalue(procdef,ioffset);
@ -157,7 +157,7 @@ begin
end
{ case 0 }
else
asmlist.concat(taicpu.op_sym(A_B,objectlibrary.newasmsymbol(procdef.mangledname)));
asmlist.concat(taicpu.op_sym(A_B,objectlibrary.newasmsymbol(procdef.mangledname,AB_EXTERNAL,AT_FUNCTION)));
exprasmList.concat(Tai_symbol_end.Createname(labelname));
@ -170,7 +170,10 @@ initialization
end.
{
$Log$
Revision 1.5 2004-02-27 13:42:56 olle
Revision 1.6 2004-03-02 00:36:33 olle
* big transformation of Tai_[const_]Symbol.Create[data]name*
Revision 1.5 2004/02/27 13:42:56 olle
+ added Tai_symbol_end
Revision 1.4 2004/02/27 10:21:05 florian

View File

@ -452,7 +452,7 @@ Unit rappcgas;
{ not found, finally ... add it anyways ... }
Message1(asmr_w_id_supposed_external,expr);
oper.InitRef;
oper.opr.ref.symbol:=objectlibrary.newasmsymbol(expr);
oper.opr.ref.symbol:=objectlibrary.newasmsymbol(expr,AB_EXTERNAL,AT_FUNCTION);
end;
end
else
@ -753,7 +753,10 @@ initialization
end.
{
$Log$
Revision 1.13 2004-02-28 16:00:45 florian
Revision 1.14 2004-03-02 00:36:33 olle
* big transformation of Tai_[const_]Symbol.Create[data]name*
Revision 1.13 2004/02/28 16:00:45 florian
* fixed make cycle
Revision 1.12 2004/02/28 14:14:44 florian

View File

@ -53,6 +53,7 @@ implementation
,dmisc
,sysutils
{$endif}
,verbose
;
@ -80,7 +81,11 @@ implementation
p.insert(tsyssym.create('Include',in_include_x_y));
p.insert(tsyssym.create('Break',in_break));
p.insert(tsyssym.create('Exit',in_exit));
p.insert(tsyssym.create('Continue',in_continue));
//if not (m_mac in aktmodeswitches) then
p.insert(tsyssym.create('Continue',in_continue));
//else
p.insert(tsyssym.create('Cycle',in_continue));
//comment(v_info,'Hubba Bubba');
p.insert(tsyssym.create('Dec',in_dec_x));
p.insert(tsyssym.create('Inc',in_inc_x));
p.insert(tsyssym.create('Str',in_str_x_string));
@ -489,7 +494,10 @@ implementation
end.
{
$Log$
Revision 1.63 2004-02-26 16:16:38 peter
Revision 1.64 2004-03-02 00:36:33 olle
* big transformation of Tai_[const_]Symbol.Create[data]name*
Revision 1.63 2004/02/26 16:16:38 peter
* tai_const.create_ptr added
Revision 1.62 2004/02/04 22:15:15 daniel

View File

@ -262,8 +262,8 @@ implementation
begin
if not Tobjectdef(pointertype.def).is_related(Tobjectdef(pointertype.def)) then
message(cg_e_illegal_expression);
curconstSegment.concat(Tai_const_symbol.Create(objectlibrary.newasmsymboldata(
Tobjectdef(pointertype.def).vmt_mangledname)));
curconstSegment.concat(Tai_const_symbol.Create(objectlibrary.newasmsymbol(
Tobjectdef(pointertype.def).vmt_mangledname,AB_EXTERNAL,AT_DATA)));
end;
niln:
curconstSegment.concat(Tai_const.Create_ptr(0));
@ -426,12 +426,12 @@ implementation
if po_abstractmethod in tprocsym(srsym).first_procdef.procoptions then
Message(type_e_cant_take_address_of_abstract_method)
else
curconstSegment.concat(Tai_const_symbol.Createname_offset(tprocsym(srsym).first_procdef.mangledname,offset));
curconstSegment.concat(Tai_const_symbol.Createname(tprocsym(srsym).first_procdef.mangledname,AT_FUNCTION,offset));
end;
varsym :
curconstSegment.concat(Tai_const_symbol.Createname_offset(tvarsym(srsym).mangledname,offset));
curconstSegment.concat(Tai_const_symbol.Createname(tvarsym(srsym).mangledname,AT_FUNCTION,offset));
typedconstsym :
curconstSegment.concat(Tai_const_symbol.Createname_offset(ttypedconstsym(srsym).mangledname,offset));
curconstSegment.concat(Tai_const_symbol.Createname(ttypedconstsym(srsym).mangledname,AT_FUNCTION,offset));
else
Message(type_e_variable_id_expected);
end;
@ -447,7 +447,7 @@ implementation
if (tinlinenode(p).left.nodetype=typen) then
begin
curconstSegment.concat(Tai_const_symbol.createname(
tobjectdef(tinlinenode(p).left.resulttype.def).vmt_mangledname));
tobjectdef(tinlinenode(p).left.resulttype.def).vmt_mangledname,AT_FUNCTION,0));
end
else
Message(cg_e_illegal_expression);
@ -764,7 +764,7 @@ implementation
(tloadnode(p).symtableentry.typ=procsym) then
begin
curconstSegment.concat(Tai_const_symbol.createname(
tprocsym(tloadnode(p).symtableentry).first_procdef.mangledname));
tprocsym(tloadnode(p).symtableentry).first_procdef.mangledname,AT_FUNCTION,0));
end
else
Message(cg_e_illegal_expression);
@ -966,7 +966,7 @@ implementation
begin
for i:=1 to vmt_offset-aktpos do
curconstsegment.concat(tai_const.create_8bit(0));
curconstsegment.concat(tai_const_symbol.createname(vmt_mangledname));
curconstsegment.concat(tai_const_symbol.createname(vmt_mangledname,AT_FUNCTION,0));
{ this is more general }
aktpos:=vmt_offset + pointer_size;
end;
@ -993,7 +993,7 @@ implementation
begin
for i:=1 to tobjectdef(t.def).vmt_offset-aktpos do
curconstsegment.concat(tai_const.create_8bit(0));
curconstsegment.concat(tai_const_symbol.createname(tobjectdef(t.def).vmt_mangledname));
curconstsegment.concat(tai_const_symbol.createname(tobjectdef(t.def).vmt_mangledname,AT_FUNCTION,0));
{ this is more general }
aktpos:=tobjectdef(t.def).vmt_offset + pointer_size;
end;
@ -1020,7 +1020,10 @@ implementation
end.
{
$Log$
Revision 1.79 2004-02-26 16:15:23 peter
Revision 1.80 2004-03-02 00:36:33 olle
* big transformation of Tai_[const_]Symbol.Create[data]name*
Revision 1.79 2004/02/26 16:15:23 peter
* support @@procvar in typed consts
Revision 1.78 2004/02/07 23:28:34 daniel

View File

@ -1481,7 +1481,7 @@ unit raatt;
begin
oper.opr.typ:=OPR_SYMBOL;
oper.opr.symofs:=l;
oper.opr.symbol:=objectlibrary.newasmsymbol(tempstr);
oper.opr.symbol:=objectlibrary.newasmsymbol(tempstr,AB_EXTERNAL,AT_FUNCTION);
end
else
begin
@ -1494,7 +1494,10 @@ end.
{
$Log$
Revision 1.9 2004-02-07 23:28:34 daniel
Revision 1.10 2004-03-02 00:36:33 olle
* big transformation of Tai_[const_]Symbol.Create[data]name*
Revision 1.9 2004/02/07 23:28:34 daniel
* Take advantage of our new with statement optimization
Revision 1.8 2003/12/25 01:25:43 peter

View File

@ -871,7 +871,7 @@ Begin
staticsymtable :
begin
initref;
opr.ref.symbol:=objectlibrary.newasmsymboldata(tvarsym(sym).mangledname);
opr.ref.symbol:=objectlibrary.newasmsymbol(tvarsym(sym).mangledname,AB_EXTERNAL,AT_DATA);
end;
parasymtable,
localsymtable :
@ -879,7 +879,7 @@ Begin
if (vo_is_external in tvarsym(sym).varoptions) then
begin
initref;
opr.ref.symbol:=objectlibrary.newasmsymboldata(tvarsym(sym).mangledname)
opr.ref.symbol:=objectlibrary.newasmsymbol(tvarsym(sym).mangledname,AB_EXTERNAL,AT_DATA)
end
else
begin
@ -938,7 +938,7 @@ Begin
typedconstsym :
begin
initref;
opr.ref.symbol:=objectlibrary.newasmsymboldata(ttypedconstsym(sym).mangledname);
opr.ref.symbol:=objectlibrary.newasmsymbol(ttypedconstsym(sym).mangledname,AB_EXTERNAL,AT_DATA);
case ttypedconstsym(sym).typedconsttype.def.deftype of
orddef,
enumdef,
@ -986,7 +986,7 @@ Begin
Message(asmr_w_calling_overload_func);
l:=opr.ref.offset;
opr.typ:=OPR_SYMBOL;
opr.symbol:=objectlibrary.newasmsymbol(tprocsym(sym).first_procdef.mangledname);
opr.symbol:=objectlibrary.newasmsymbol(tprocsym(sym).first_procdef.mangledname,AB_EXTERNAL,AT_FUNCTION);
opr.symofs:=l;
hasvar:=true;
SetupVar:=TRUE;
@ -1538,7 +1538,7 @@ end;
Procedure ConcatConstSymbol(p : TAAsmoutput;const sym:string;l:longint);
begin
p.concat(Tai_const_symbol.Createname_offset(sym,l));
p.concat(Tai_const_symbol.Createname(sym,AT_FUNCTION,l));
end;
@ -1590,7 +1590,7 @@ end;
{ linked list of instructions.(used by AT&T styled asm) }
{*********************************************************************}
begin
p.concat(Tai_symbol.Createname_global(s,0));
p.concat(Tai_symbol.Createname_global(s,AT_FUNCTION,0));
end;
procedure ConcatLocal(p:TAAsmoutput;const s : string);
@ -1600,7 +1600,7 @@ end;
{ linked list of instructions. }
{*********************************************************************}
begin
p.concat(Tai_symbol.Createname(s,0));
p.concat(Tai_symbol.Createname(s,AT_FUNCTION,0));
end;
Procedure ConcatGlobalBss(const s : string;size : longint);
@ -1626,7 +1626,10 @@ end;
end.
{
$Log$
Revision 1.81 2004-02-21 21:04:09 daniel
Revision 1.82 2004-03-02 00:36:33 olle
* big transformation of Tai_[const_]Symbol.Create[data]name*
Revision 1.81 2004/02/21 21:04:09 daniel
* Micro-optimizations
Revision 1.80 2003/11/30 10:15:42 jonas

View File

@ -407,7 +407,7 @@ implementation
procedure TCgSparc.a_call_name(list:TAasmOutput;const s:string);
begin
list.concat(taicpu.op_sym(A_CALL,objectlibrary.newasmsymbol(s)));
list.concat(taicpu.op_sym(A_CALL,objectlibrary.newasmsymbol(s,AB_EXTERNAL,AT_FUNCTION)));
{ Delay slot }
list.concat(taicpu.op_none(A_NOP));
end;
@ -728,7 +728,7 @@ implementation
procedure TCgSparc.a_jmp_always(List:TAasmOutput;l:TAsmLabel);
begin
List.Concat(TAiCpu.op_sym(A_BA,objectlibrary.newasmsymbol(l.name)));
List.Concat(TAiCpu.op_sym(A_BA,objectlibrary.newasmsymbol(l.name,AB_EXTERNAL,AT_FUNCTION)));
{ Delay slot }
list.Concat(TAiCpu.Op_none(A_NOP));
end;
@ -1107,7 +1107,10 @@ begin
end.
{
$Log$
Revision 1.79 2004-02-27 13:28:28 mazen
Revision 1.80 2004-03-02 00:36:33 olle
* big transformation of Tai_[const_]Symbol.Create[data]name*
Revision 1.79 2004/02/27 13:28:28 mazen
* symaddr ==> refaddr to follow the rest of compiler changes
Revision 1.78 2004/02/04 22:01:13 peter

View File

@ -317,7 +317,7 @@ Interface
Consume(AS_LPAREN);
BuildConstSymbolExpression(false, true,false,l,tempstr);
if not assigned(oper.opr.ref.symbol) then
oper.opr.ref.symbol:=objectlibrary.newasmsymbol(tempstr)
oper.opr.ref.symbol:=objectlibrary.newasmsymbol(tempstr,AB_EXTERNAL,AT_FUNCTION)
else
Message(asmr_e_cant_have_multiple_relocatable_symbols);
case oper.opr.typ of
@ -409,7 +409,7 @@ Interface
{ not found, finally ... add it anyways ... }
Message1(asmr_w_id_supposed_external,expr);
oper.InitRef;
oper.opr.ref.symbol:=objectlibrary.newasmsymbol(expr);
oper.opr.ref.symbol:=objectlibrary.newasmsymbol(expr,AB_EXTERNAL,AT_FUNCTION);
end;
end
else
@ -626,7 +626,10 @@ initialization
end.
{
$Log$
Revision 1.7 2004-02-27 13:27:28 mazen
Revision 1.8 2004-03-02 00:36:33 olle
* big transformation of Tai_[const_]Symbol.Create[data]name*
Revision 1.7 2004/02/27 13:27:28 mazen
* symaddr ==> refaddr to follow the rest of compiler changes
Revision 1.6 2004/01/12 22:11:39 peter

View File

@ -5348,7 +5348,7 @@ implementation
exit;
if not(po_virtualmethod in tprocdef(proc.procdef).procoptions) then
begin
rttiList.concat(Tai_const_symbol.Createname(tprocdef(proc.procdef).mangledname));
rttiList.concat(Tai_const_symbol.Createname(tprocdef(proc.procdef).mangledname,AT_FUNCTION,0));
typvalue:=1;
end
else
@ -5373,7 +5373,7 @@ implementation
internalerror(1509992);
{ access to implicit class property as field }
proctypesinfo:=(0 shl 0) or (0 shl 2) or (0 shl 4);
rttiList.concat(Tai_const_symbol.Createname(tvarsym(sym.vartype.def.get_rtti_label)));
rttiList.concat(Tai_const_symbol.Createname(tvarsym(sym.vartype.def.get_rtti_label),AT_FUNCTION,0));
rttiList.concat(Tai_const.Create_32bit(tvarsym(sym.address)));
rttiList.concat(Tai_const.Create_32bit(tvarsym(sym.address)));
{ per default stored }
@ -5547,7 +5547,7 @@ implementation
hp:=tclasslistitem(classtablelist.first);
while assigned(hp) do
begin
rttiList.concat(Tai_const_symbol.Createname(tobjectdef(hp.p).vmt_mangledname));
rttiList.concat(Tai_const_symbol.Createname(tobjectdef(hp.p).vmt_mangledname,AT_FUNCTION,0));
hp:=tclasslistitem(hp.next);
end;
@ -5606,7 +5606,7 @@ implementation
begin
if (oo_has_vmt in objectoptions) and
not(objecttype in [odt_interfacecom,odt_interfacecorba]) then
rttiList.concat(Tai_const_symbol.Createname(vmt_mangledname))
rttiList.concat(Tai_const_symbol.Createname(vmt_mangledname,AT_FUNCTION,0))
else
rttiList.concat(Tai_const.Create_ptr(0));
@ -6119,7 +6119,10 @@ implementation
end.
{
$Log$
Revision 1.223 2004-02-26 16:16:38 peter
Revision 1.224 2004-03-02 00:36:33 olle
* big transformation of Tai_[const_]Symbol.Create[data]name*
Revision 1.223 2004/02/26 16:16:38 peter
* tai_const.create_ptr added
Revision 1.222 2004/02/22 19:55:25 daniel

View File

@ -2246,7 +2246,7 @@ implementation
begin
{ the label is always a global label }
if not assigned(lab) then
lab:=objectlibrary.newasmsymboldata(mangledname);
lab:=objectlibrary.newasmsymbol(mangledname,AB_EXTERNAL,AT_DATA);
get_label:=lab;
end;
@ -2254,7 +2254,10 @@ implementation
end.
{
$Log$
Revision 1.161 2004-02-24 16:12:39 peter
Revision 1.162 2004-03-02 00:36:33 olle
* big transformation of Tai_[const_]Symbol.Create[data]name*
Revision 1.161 2004/02/24 16:12:39 peter
* operator overload chooses rewrite
* overload choosing is now generic and moved to htypechk

View File

@ -176,8 +176,8 @@ begin
{$ifdef i386}
{ place jump in codesegment }
codesegment.concat(Tai_align.Create_op(4,$90));
codeSegment.concat(Tai_symbol.Createname_global(hp2.name^,0));
codeSegment.concat(Taicpu.Op_sym(A_JMP,S_NO,objectlibrary.newasmsymbol(tprocsym(hp2.sym).first_procdef.mangledname)));
codeSegment.concat(Tai_symbol.Createname_global(hp2.name^,AT_FUNCTION,0));
codeSegment.concat(Taicpu.Op_sym(A_JMP,S_NO,objectlibrary.newasmsymbol(tprocsym(hp2.sym).first_procdef.mangledname,AB_EXTERNAL,AT_FUNCTION)));
codeSegment.concat(Tai_symbol_end.Createname(hp2.name^));
{$endif i386}
end;
@ -505,7 +505,10 @@ initialization
end.
{
$Log$
Revision 1.8 2004-01-29 23:57:15 florian
Revision 1.9 2004-03-02 00:36:33 olle
* big transformation of Tai_[const_]Symbol.Create[data]name*
Revision 1.8 2004/01/29 23:57:15 florian
* fixed linker response file handling
Revision 1.7 2004/01/29 22:50:53 florian

View File

@ -216,9 +216,9 @@ implementation
if (po_public in hp2.procdef.procoptions) then
begin
importsSection.concat(Tai_section.Create(sec_code));
importsSection.concat(Tai_symbol.createname_global(mangledstring,0));
importsSection.concat(Tai_symbol.createname_global(mangledstring,AT_FUNCTION,0));
mangledstring := '_$'+mangledstring;
importsSection.concat(taicpu.op_sym(A_B,objectlibrary.newasmsymbol(mangledstring)));
importsSection.concat(taicpu.op_sym(A_B,objectlibrary.newasmsymbol(mangledstring,AB_EXTERNAL,AT_FUNCTION)));
end;
{$else powerpc}
internalerror(2004010501);
@ -227,9 +227,9 @@ implementation
importsSection.concat(Tai_section.Create(sec_data));
importsSection.concat(Tai_direct.create(strpnew('.section __TEXT,__symbol_stub1,symbol_stubs,pure_instructions,16')));
importsSection.concat(Tai_align.Create(4));
importsSection.concat(Tai_symbol.Createname(mangledstring,0));
importsSection.concat(Tai_symbol.Createname(mangledstring,AT_FUNCTION,0));
importsSection.concat(Tai_direct.create(strpnew((#9+'.indirect_symbol ')+symname)));
l1 := objectlibrary.newasmsymbol(mangledstring+'$lazy_ptr');
l1 := objectlibrary.newasmsymbol(mangledstring+'$lazy_ptr',AB_EXTERNAL,AT_FUNCTION);
reference_reset_symbol(href,l1,0);
{$IfDef GDB}
if (cs_debuginfo in aktmoduleswitches) and assigned(hp2.procdef) then
@ -255,14 +255,14 @@ implementation
importsSection.concat(Tai_direct.create(strpnew('.lazy_symbol_pointer')));
importsSection.concat(Tai_symbol.Create(l1,0));
importsSection.concat(Tai_direct.create(strpnew((#9+'.indirect_symbol ')+symname)));
importsSection.concat(tai_const_symbol.createname(strpnew('dyld_stub_binding_helper')));
importsSection.concat(tai_const_symbol.createname(strpnew('dyld_stub_binding_helper'),AT_FUNCTION,0));
end
else
begin
importsSection.concat(Tai_section.Create(sec_data));
importsSection.concat(Tai_direct.create(strpnew('.non_lazy_symbol_pointer')));
importsSection.concat(Tai_symbol.Createname(hp2.func^,0));
importsSection.concat(Tai_symbol.Createname(hp2.func^,AT_FUNCTION,0));
importsSection.concat(Tai_direct.create(strpnew((#9+'.indirect_symbol ')+hp2.name^)));
importsSection.concat(Tai_const.create_32bit(0));
end;
@ -381,8 +381,8 @@ begin
{$ifdef i386}
{ place jump in codesegment }
codesegment.concat(Tai_align.Create_op(4,$90));
codeSegment.concat(Tai_symbol.Createname_global(hp2.name^,0));
codeSegment.concat(Taicpu.Op_sym(A_JMP,S_NO,objectlibrary.newasmsymbol(tprocsym(hp2.sym).first_procdef.mangledname)));
codeSegment.concat(Tai_symbol.Createname_global(hp2.name^,AT_FUNCTION,0));
codeSegment.concat(Taicpu.Op_sym(A_JMP,S_NO,objectlibrary.newasmsymbol(tprocsym(hp2.sym).first_procdef.mangledname,AB_EXTERNAL,AT_FUNCTION)));
codeSegment.concat(Tai_symbol_end.Createname(hp2.name^));
{$endif i386}
end;
@ -760,7 +760,10 @@ initialization
end.
{
$Log$
Revision 1.10 2004-02-27 10:21:05 florian
Revision 1.11 2004-03-02 00:36:33 olle
* big transformation of Tai_[const_]Symbol.Create[data]name*
Revision 1.10 2004/02/27 10:21:05 florian
* top_symbol killed
+ refaddr to treference added
+ refsymbol to treference added

View File

@ -178,22 +178,22 @@ begin
{$ifdef i386}
{ place jump in codesegment }
codesegment.concat(Tai_align.Create_op(4,$90));
codeSegment.concat(Tai_symbol.Createname_global(hp2.name^,0));
codeSegment.concat(Taicpu.Op_sym(A_JMP,S_NO,objectlibrary.newasmsymbol(tprocsym(hp2.sym).first_procdef.mangledname)));
codeSegment.concat(Tai_symbol.Createname_global(hp2.name^,AT_FUNCTION,0));
codeSegment.concat(Taicpu.Op_sym(A_JMP,S_NO,objectlibrary.newasmsymbol(tprocsym(hp2.sym).first_procdef.mangledname,AB_EXTERNAL,AT_FUNCTION)));
codeSegment.concat(Tai_symbol_end.Createname(hp2.name^));
{$else i386}
{$ifdef m68k}
{ place jump in codesegment }
codesegment.concat(tai_align.create(4));
codesegment.concat(tai_symbol.createname_global(hp2.name^,0));
codesegment.concat(taicpu.op_sym(A_JMP,S_NO,objectlibrary.newasmsymbol(tprocsym(hp2.sym).first_procdef.mangledname)));
codesegment.concat(tai_symbol.createname_global(hp2.name^,AT_FUNCTION,0));
codesegment.concat(taicpu.op_sym(A_JMP,S_NO,objectlibrary.newasmsymbol(tprocsym(hp2.sym).first_procdef.mangledname,AB_EXTERNAL,AT_FUNCTION)));
codesegment.concat(tai_symbol_end.createname(hp2.name^));
{$else m68k}
{$ifdef powerpc}
{ place jump in codesegment }
codesegment.concat(tai_align.create(4));
codesegment.concat(tai_symbol.createname_global(hp2.name^,0));
codesegment.concat(taicpu.op_sym(A_B,objectlibrary.newasmsymbol(tprocsym(hp2.sym).first_procdef.mangledname)));
codesegment.concat(tai_symbol.createname_global(hp2.name^,AT_FUNCTION,0));
codesegment.concat(taicpu.op_sym(A_B,objectlibrary.newasmsymbol(tprocsym(hp2.sym).first_procdef.mangledname,AB_EXTERNAL,AT_FUNCTION)));
codesegment.concat(tai_symbol_end.createname(hp2.name^));
{$endif powerpc}
{$else powerpc}
@ -578,7 +578,10 @@ end.
{
$Log$
Revision 1.14 2004-01-03 13:51:05 jonas
Revision 1.15 2004-03-02 00:36:33 olle
* big transformation of Tai_[const_]Symbol.Create[data]name*
Revision 1.14 2004/01/03 13:51:05 jonas
+ support exported procedures for linuxppc
* refuse to compile systems/t_linux.pas if processor-specific support
for exported procedures is absent

View File

@ -241,8 +241,8 @@ begin
{$ifdef i386}
{ place jump in codesegment }
codesegment.concat(Tai_align.Create_op(4,$90));
codeSegment.concat(Tai_symbol.Createname_global(hp2.name^,0));
codeSegment.concat(Taicpu.Op_sym(A_JMP,S_NO,objectlibrary.newasmsymbol(tprocsym(hp2.sym).first_procdef.mangledname)));
codeSegment.concat(Tai_symbol.Createname_global(hp2.name^,AT_FUNCTION,0));
codeSegment.concat(Taicpu.Op_sym(A_JMP,S_NO,objectlibrary.newasmsymbol(tprocsym(hp2.sym).first_procdef.mangledname,AB_EXTERNAL,AT_FUNCTION)));
codeSegment.concat(Tai_symbol_end.Createname(hp2.name^));
{$endif i386}
end;
@ -547,7 +547,10 @@ initialization
end.
{
$Log$
Revision 1.9 2003-11-11 16:46:40 marco
Revision 1.10 2004-03-02 00:36:33 olle
* big transformation of Tai_[const_]Symbol.Create[data]name*
Revision 1.9 2003/11/11 16:46:40 marco
* minor fix
Revision 1.8 2003/04/27 07:29:52 peter

View File

@ -189,8 +189,8 @@ begin
{$ifdef i386}
{ place jump in codesegment }
codesegment.concat(Tai_align.Create_op(4,$90));
codeSegment.concat(Tai_symbol.Createname_global(hp2.name^,0));
codeSegment.concat(Taicpu.Op_sym(A_JMP,S_NO,objectlibrary.newasmsymbol(tprocsym(hp2.sym).first_procdef.mangledname)));
codeSegment.concat(Tai_symbol.Createname_global(hp2.name^,AT_FUNCTION,0));
codeSegment.concat(Taicpu.Op_sym(A_JMP,S_NO,objectlibrary.newasmsymbol(tprocsym(hp2.sym).first_procdef.mangledname,AB_EXTERNAL,AT_FUNCTION)));
codeSegment.concat(Tai_symbol_end.Createname(hp2.name^));
{$endif i386}
end;
@ -489,7 +489,10 @@ initialization
end.
{
$Log$
Revision 1.6 2003-10-11 19:32:04 marco
Revision 1.7 2004-03-02 00:36:33 olle
* big transformation of Tai_[const_]Symbol.Create[data]name*
Revision 1.6 2003/10/11 19:32:04 marco
* -Xd
Revision 1.5 2003/10/03 14:16:48 marco

View File

@ -328,7 +328,7 @@ const
if (cs_debuginfo in aktmoduleswitches) then
importsSection.concat(Tai_stab_function_name.Create(nil));
{$EndIf GDB}
importsSection.concat(Tai_symbol.Createname_global(hp2.func^,0));
importsSection.concat(Tai_symbol.Createname_global(hp2.func^,AT_FUNCTION,0));
importsSection.concat(Taicpu.Op_ref(A_JMP,S_NO,href));
importsSection.concat(Tai_align.Create_op(4,$90));
{$IfDef GDB}
@ -351,7 +351,7 @@ const
{ add jump field to imporTSection }
importsSection.concat(Tai_section.Create(sec_idata5));
if hp2.is_var then
importsSection.concat(Tai_symbol.Createname_global(hp2.func^,0))
importsSection.concat(Tai_symbol.Createname_global(hp2.func^,AT_FUNCTION,0))
else
importsSection.concat(Tai_label.Create(lcode));
{$ifdef GDB}
@ -366,7 +366,7 @@ const
inc(suffix);
importname:='__imp_'+hp2.name^+'_'+tostr(suffix);
end;
importssection.concat(tai_symbol.createname(importname,4));
importssection.concat(tai_symbol.createname(importname,AT_FUNCTION,4));
end
else
begin
@ -377,7 +377,7 @@ const
inc(suffix);
importname:='__imp_by_ordinal'+tostr(hp2.ordnr)+'_'+tostr(suffix);
end;
importssection.concat(tai_symbol.createname(importname,4));
importssection.concat(tai_symbol.createname(importname,AT_FUNCTION,4));
end;
end;
{$endif GDB}
@ -487,7 +487,7 @@ const
if (cs_debuginfo in aktmoduleswitches) then
importssection.concat(tai_stab_function_name.create(nil));
{$EndIf GDB}
importsSection.concat(Tai_symbol.Createname_global(hp2.func^,0));
importsSection.concat(Tai_symbol.Createname_global(hp2.func^,AT_FUNCTION,0));
importsSection.concat(Taicpu.Op_ref(A_JMP,S_NO,href));
importsSection.concat(Tai_align.Create_op(4,$90));
{$IfDef GDB}
@ -513,7 +513,7 @@ const
inc(suffix);
importname:='__imp_'+hp2.name^+'_'+tostr(suffix);
end;
importssection.concat(tai_symbol.createname(importname,4));
importssection.concat(tai_symbol.createname(importname,AT_FUNCTION,4));
end
else
begin
@ -524,7 +524,7 @@ const
inc(suffix);
importname:='__imp_by_ordinal'+tostr(hp2.ordnr)+'_'+tostr(suffix);
end;
importssection.concat(tai_symbol.createname(importname,4));
importssection.concat(tai_symbol.createname(importname,AT_FUNCTION,4));
end;
end;
{$endif GDB}
@ -532,7 +532,7 @@ const
end
else
begin
importsSection.concat(Tai_symbol.Createname_global(hp2.func^,0));
importsSection.concat(Tai_symbol.Createname_global(hp2.func^,AT_FUNCTION,0));
end;
importsSection.concat(Tai_const_symbol.Create_rva(hp2.lab));
hp2:=twin32imported_item(hp2.next);
@ -1606,7 +1606,10 @@ initialization
end.
{
$Log$
Revision 1.28 2004-02-27 10:21:05 florian
Revision 1.29 2004-03-02 00:36:33 olle
* big transformation of Tai_[const_]Symbol.Create[data]name*
Revision 1.28 2004/02/27 10:21:05 florian
* top_symbol killed
+ refaddr to treference added
+ refsymbol to treference added

View File

@ -536,7 +536,7 @@ unit cgx86;
procedure tcgx86.a_call_name(list : taasmoutput;const s : string);
begin
list.concat(taicpu.op_sym(A_CALL,S_NO,objectlibrary.newasmsymbol(s)));
list.concat(taicpu.op_sym(A_CALL,S_NO,objectlibrary.newasmsymbol(s,AB_EXTERNAL,AT_FUNCTION)));
end;
@ -1659,7 +1659,7 @@ unit cgx86;
if cs_create_pic in aktmoduleswitches then
begin
a_call_name(list,'FPC_GETEIPINEBX');
list.concat(taicpu.op_sym_ofs_reg(A_ADD,tcgsize2opsize[OS_ADDR],objectlibrary.newasmsymboldata('_GLOBAL_OFFSET_TABLE_'),0,NR_PIC_OFFSET_REG));
list.concat(taicpu.op_sym_ofs_reg(A_ADD,tcgsize2opsize[OS_ADDR],objectlibrary.newasmsymbol('_GLOBAL_OFFSET_TABLE_',AB_EXTERNAL,AT_DATA),0,NR_PIC_OFFSET_REG));
list.concat(tai_regalloc.alloc(NR_PIC_OFFSET_REG));
end;
end;
@ -1781,7 +1781,10 @@ unit cgx86;
end.
{
$Log$
Revision 1.115 2004-02-27 10:21:06 florian
Revision 1.116 2004-03-02 00:36:33 olle
* big transformation of Tai_[const_]Symbol.Create[data]name*
Revision 1.115 2004/02/27 10:21:06 florian
* top_symbol killed
+ refaddr to treference added
+ refsymbol to treference added

View File

@ -518,7 +518,7 @@ Implementation
{ not found, finally ... add it anyways ... }
Message1(asmr_w_id_supposed_external,expr);
oper.InitRef;
oper.opr.ref.symbol:=objectlibrary.newasmsymbol(expr);
oper.opr.ref.symbol:=objectlibrary.newasmsymbol(expr,AB_EXTERNAL,AT_FUNCTION);
end;
end
else
@ -789,7 +789,10 @@ Implementation
end.
{
$Log$
Revision 1.2 2004-02-09 19:23:48 peter
Revision 1.3 2004-03-02 00:36:33 olle
* big transformation of Tai_[const_]Symbol.Create[data]name*
Revision 1.2 2004/02/09 19:23:48 peter
* reg_2_opsize replaced with reg_cgsize
Revision 1.1 2004/01/14 23:39:05 florian