* Florian's culmutative nr. 1; contains:

- invalid calling conventions for a certain cpu are rejected
    - arm softfloat calling conventions
    - -Sp for cpu dependend code generation
    - several arm fixes
    - remaining code for value open array paras on heap
This commit is contained in:
florian 2003-11-07 15:58:32 +00:00
parent 15eef9c65a
commit bbf7300a0c
29 changed files with 748 additions and 331 deletions

View File

@ -144,7 +144,11 @@ interface
type
{ Types of operand }
toptype=(top_none,top_reg,top_ref,top_const,top_symbol,top_bool,top_local);
toptype=(top_none,top_reg,top_ref,top_const,top_symbol,top_bool,top_local,
{ ARM only }
top_regset,
{ ARM only }
top_shifterop);
toper=record
ot : longint;
@ -158,6 +162,10 @@ interface
{ local varsym that will be inserted in pass_2 }
top_local : (localsym:pointer;localsymderef:tderef;localsymofs:longint;localindexreg:tregister;
localscale:byte;localgetoffset:boolean);
{$ifdef arm}
top_regset : (regset:^tcpuregisterset);
top_shifterop : (shifterop : pshifterop);
{$endif arm}
end;
poper=^toper;
@ -1678,13 +1686,18 @@ implementation
procedure taicpu_abstract.clearop(opidx:longint);
begin
with oper[opidx]^ do
case typ of
top_ref:
dispose(ref);
begin
case typ of
top_ref:
dispose(ref);
{$ifdef ARM}
top_shifterop:
dispose(shifterop);
top_shifterop:
dispose(shifterop);
top_regset:
dispose(regset);
{$endif ARM}
end;
typ:=top_none;
end;
end;
@ -2140,7 +2153,15 @@ implementation
end.
{
$Log$
Revision 1.53 2003-10-30 19:59:00 peter
Revision 1.54 2003-11-07 15:58:32 florian
* Florian's culmutative nr. 1; contains:
- invalid calling conventions for a certain cpu are rejected
- arm softfloat calling conventions
- -Sp for cpu dependend code generation
- several arm fixes
- remaining code for value open array paras on heap
Revision 1.53 2003/10/30 19:59:00 peter
* support scalefactor for opr_local
* support reference with opr_local set, fixes tw2631

View File

@ -51,7 +51,8 @@ unit agarmgas;
systems,
assemble,
aasmcpu,
itarmgas;
itarmgas,
cgbase;
const
as_arm_gas_info : tasminfo =
@ -140,7 +141,7 @@ unit agarmgas;
var
hs : string;
first : boolean;
r : tregister;
r : tsuperregister;
begin
case o.typ of
top_reg:
@ -206,12 +207,12 @@ unit agarmgas;
{ LDM and STM use references as first operand but they are written like a register }
if (i=0) and (op in [A_LDM,A_STM]) then
begin
s:=s+sep+gas_regname(taicpu(hp).oper[0].ref^.index);
if taicpu(hp).oper[0].ref^.addressmode=AM_PREINDEXED then
s:=s+sep+gas_regname(taicpu(hp).oper[0]^.ref^.index);
if taicpu(hp).oper[0]^.ref^.addressmode=AM_PREINDEXED then
s:=s+'!';
end
else
s:=s+sep+getopstr(taicpu(hp).oper[i]);
s:=s+sep+getopstr(taicpu(hp).oper[i]^);
sep:=',';
end;
@ -225,7 +226,15 @@ begin
end.
{
$Log$
Revision 1.12 2003-11-02 14:30:03 florian
Revision 1.13 2003-11-07 15:58:32 florian
* Florian's culmutative nr. 1; contains:
- invalid calling conventions for a certain cpu are rejected
- arm softfloat calling conventions
- -Sp for cpu dependend code generation
- several arm fixes
- remaining code for value open array paras on heap
Revision 1.12 2003/11/02 14:30:03 florian
* fixed ARM for new reg. allocation scheme
Revision 1.11 2003/09/06 11:21:49 florian

View File

@ -89,7 +89,7 @@ unit cgcpu;
procedure g_flags2reg(list: taasmoutput; size: TCgSize; const f: TResFlags; reg: TRegister); override;
procedure g_copyvaluepara_openarray(list : taasmoutput;const ref, lenref:treference;elesize:integer);override;
procedure g_copyvaluepara_openarray(list : taasmoutput;const ref, lenref:treference;elesize:aword);override;
procedure g_stackframe_entry(list : taasmoutput;localsize : longint);override;
procedure g_return_from_proc(list : taasmoutput;parasize : aword); override;
procedure g_restore_frame_pointer(list : taasmoutput);override;
@ -141,7 +141,7 @@ unit cgcpu;
rgfpu:=trgcpu.create(R_FPUREGISTER,R_SUBNONE,
[RS_F0,RS_F1,RS_F2,RS_F3,RS_F4,RS_F5,RS_F6,RS_F7],first_fpu_imreg,[]);
rgmm:=trgcpu.create(R_MMREGISTER,R_SUBNONE,
[RS_S0..RS_S31],first_mm_imreg,[]);
[RS_S0,RS_S1,RS_R2,RS_R3,RS_R4,RS_S31],first_mm_imreg,[]);
end;
@ -866,7 +866,7 @@ unit cgcpu;
end;
procedure tcgarm.g_copyvaluepara_openarray(list : taasmoutput;const ref, lenref:treference;elesize:integer);
procedure tcgarm.g_copyvaluepara_openarray(list : taasmoutput;const ref, lenref:treference;elesize:aword);
begin
end;
@ -1282,7 +1282,15 @@ begin
end.
{
$Log$
Revision 1.21 2003-11-02 14:30:03 florian
Revision 1.22 2003-11-07 15:58:32 florian
* Florian's culmutative nr. 1; contains:
- invalid calling conventions for a certain cpu are rejected
- arm softfloat calling conventions
- -Sp for cpu dependend code generation
- several arm fixes
- remaining code for value open array paras on heap
Revision 1.21 2003/11/02 14:30:03 florian
* fixed ARM for new reg. allocation scheme
Revision 1.20 2003/10/11 16:06:42 florian

View File

@ -17,6 +17,9 @@ Unit CPUInfo;
Interface
uses
globtype;
Type
{ Architecture word - Native unsigned type }
AWord = Longword;
@ -42,12 +45,15 @@ Type
{ possible supported processors for this target }
tprocessors =
(no_processor,
armv4
armv3,
armv4,
armv5
);
tfputype =
(no_fpuprocessor,
fpu_soft,
fpu_libgcc,
fpu_fpa,
fpu_fpa10,
fpu_fpa11,
@ -70,12 +76,50 @@ Const
{ for linux: }
jmp_buf_size = 220; { according to sizeof(jmp_buf) on my Zaurus (FK) }
{ calling conventions supported by the code generator }
supported_calling_conventions = [
pocall_internproc,
pocall_compilerproc,
pocall_inline,
pocall_stdcall,
{ same as stdcall only different name mangling }
pocall_cdecl,
{ same as stdcall only different name mangling }
pocall_cppdecl,
{ same as stdcall but floating point numbers are handled like equal sized integers }
pocall_softfloat
];
processorsstr : array[tprocessors] of string[5] = ('',
'ARMV3',
'ARMV4',
'ARMV5'
);
fputypestr : array[tfputype] of string[6] = ('',
'SOFT',
'LIBGCC',
'FPA',
'FPA10',
'FPA11',
'VFP'
);
Implementation
end.
{
$Log$
Revision 1.2 2003-08-25 23:20:38 florian
Revision 1.3 2003-11-07 15:58:32 florian
* Florian's culmutative nr. 1; contains:
- invalid calling conventions for a certain cpu are rejected
- arm softfloat calling conventions
- -Sp for cpu dependend code generation
- several arm fixes
- remaining code for value open array paras on heap
Revision 1.2 2003/08/25 23:20:38 florian
+ started to implement FPU support for the ARM
* fixed a lot of other things

View File

@ -86,7 +86,7 @@ unit cpupara;
end;
}
function getparaloc(p : tdef) : tcgloc;
function getparaloc(calloption : tproccalloption; p : tdef) : tcgloc;
begin
{ Later, the LOC_REFERENCE is in most cases changed into LOC_REGISTER
if push_addr_param for the def is true
@ -95,7 +95,10 @@ unit cpupara;
orddef:
getparaloc:=LOC_REGISTER;
floatdef:
getparaloc:=LOC_FPUREGISTER;
if calloption=pocall_softfloat then
getparaloc:=LOC_REGISTER
else
getparaloc:=LOC_FPUREGISTER;
enumdef:
getparaloc:=LOC_REGISTER;
pointerdef:
@ -207,10 +210,6 @@ unit cpupara;
nextmmreg:=RS_D0;
stack_offset:=0;
{ frame pointer for nested procedures? }
{ inc(nextintreg); }
{ constructor? }
{ destructor? }
hp:=tparaitem(p.para.first);
while assigned(hp) do
begin
@ -222,7 +221,7 @@ unit cpupara;
else
begin
paradef := hp.paratype.def;
loc:=getparaloc(paradef);
loc:=getparaloc(p.proccalloption,paradef);
end;
{ make sure all alignment bytes are 0 as well }
fillchar(paraloc,sizeof(paraloc),0);
@ -233,16 +232,17 @@ unit cpupara;
{ for things like formaldef }
if paraloc.size = OS_NO then
paraloc.size := OS_ADDR;
is_64bit := paraloc.size in [OS_64,OS_S64];
is_64bit := paraloc.size in [OS_64,OS_S64,OS_F64];
if nextintreg<=(RS_R3-ord(is_64bit)) then
begin
paraloc.loc:=LOC_REGISTER;
if is_64bit then
{ big endian }
if is_64bit then
begin
paraloc.registerhigh:=newreg(R_INTREGISTER,nextintreg,R_SUBWHOLE);;
paraloc.registerhigh:=newreg(R_INTREGISTER,nextintreg,R_SUBWHOLE);
inc(nextintreg);
end;
paraloc.registerlow:=newreg(R_INTREGISTER,nextintreg,R_SUBWHOLE);;
paraloc.registerlow:=newreg(R_INTREGISTER,nextintreg,R_SUBWHOLE);
inc(nextintreg);
end
else
@ -336,7 +336,15 @@ begin
end.
{
$Log$
Revision 1.8 2003-11-02 14:30:03 florian
Revision 1.9 2003-11-07 15:58:32 florian
* Florian's culmutative nr. 1; contains:
- invalid calling conventions for a certain cpu are rejected
- arm softfloat calling conventions
- -Sp for cpu dependend code generation
- several arm fixes
- remaining code for value open array paras on heap
Revision 1.8 2003/11/02 14:30:03 florian
* fixed ARM for new reg. allocation scheme
Revision 1.7 2003/09/11 11:55:00 florian

View File

@ -307,6 +307,8 @@ interface
Function SetCompileMode(const s:string; changeInit: boolean):boolean;
function SetAktProcCall(const s:string; changeInit: boolean):boolean;
function SetProcessor(const s:string; changeInit: boolean):boolean;
function SetFpuType(const s:string; changeInit: boolean):boolean;
procedure InitGlobals;
procedure DoneGlobals;
@ -1376,7 +1378,8 @@ implementation
'PASCAL',
'REGISTER',
'SAFECALL',
'STDCALL'
'STDCALL',
'SOFTFLOAT'
);
var
t : tproccalloption;
@ -1394,6 +1397,39 @@ implementation
end;
function SetProcessor(const s:string; changeInit: boolean):boolean;
var
t : tprocessors;
begin
SetProcessor:=false;
for t:=low(tprocessors) to high(tprocessors) do
if processorsstr[t]=s then
begin
aktspecificoptprocessor:=t;
SetProcessor:=true;
break;
end;
if changeinit then
initspecificoptprocessor:=aktspecificoptprocessor;
end;
function SetFpuType(const s:string; changeInit: boolean):boolean;
var
t : tfputype;
begin
SetFpuType:=false;
for t:=low(tfputype) to high(tfputype) do
if fputypestr[t]=s then
begin
aktfputype:=t;
SetFpuType:=true;
break;
end;
if changeinit then
initfputype:=aktfputype;
end;
{ '('D1:'00000000-'D2:'0000-'D3:'0000-'D4:'0000-000000000000)' }
function string2guid(const s: string; var GUID: TGUID): boolean;
@ -1713,7 +1749,15 @@ implementation
end.
{
$Log$
Revision 1.112 2003-10-23 17:18:56 peter
Revision 1.113 2003-11-07 15:58:32 florian
* Florian's culmutative nr. 1; contains:
- invalid calling conventions for a certain cpu are rejected
- arm softfloat calling conventions
- -Sp for cpu dependend code generation
- several arm fixes
- remaining code for value open array paras on heap
Revision 1.112 2003/10/23 17:18:56 peter
* delphi mode uses packenum 1
Revision 1.111 2003/10/22 15:40:44 marco

View File

@ -123,23 +123,42 @@ interface
{ currently parsed block type }
tblock_type = (bt_none,
bt_general,bt_type,bt_const,bt_except
bt_general,bt_type,bt_const,bt_except,bt_body
);
{ calling convention for tprocdef and tprocvardef }
tproccalloption=(pocall_none,
pocall_cdecl, { procedure uses C styled calling }
pocall_cppdecl, { C++ calling conventions }
pocall_compilerproc, { Procedure is used for internal compiler calls }
pocall_far16, { Far16 for OS/2 }
pocall_oldfpccall, { Old style FPC default calling }
pocall_inline, { Procedure is an assembler macro }
pocall_internproc, { Procedure has compiler magic}
pocall_palmossyscall, { procedure is a PalmOS system call }
pocall_pascal, { pascal standard left to right }
pocall_register, { procedure uses register (fastcall) calling }
pocall_safecall, { safe call calling conventions }
pocall_stdcall { procedure uses stdcall call }
{ procedure uses C styled calling }
pocall_cdecl,
{ C++ calling conventions }
pocall_cppdecl,
{ Procedure is used for internal compiler calls }
pocall_compilerproc,
{ Far16 for OS/2 }
pocall_far16,
{ Old style FPC default calling }
pocall_oldfpccall,
{ Procedure is an assembler macro }
pocall_inline,
{ Procedure has compiler magic}
pocall_internproc,
{ procedure is a PalmOS system call }
pocall_palmossyscall,
{ pascal standard left to right }
pocall_pascal,
{ procedure uses register (fastcall) calling }
pocall_register,
{ safe call calling conventions }
pocall_safecall,
{ procedure uses stdcall call }
pocall_stdcall,
{ Special calling convention for cpus without a floating point
unit. Floating point numbers are passed in integer registers
instead of floating point registers. Depending on the other
available calling conventions available for the cpu
this replaces either pocall_fastcall or pocall_stdcall.
}
pocall_softfloat
);
tproccalloptions = set of tproccalloption;
@ -157,7 +176,8 @@ interface
'Pascal',
'Register',
'SafeCall',
'StdCall'
'StdCall',
'SoftFloat'
);
{ Default calling convention }
@ -210,7 +230,15 @@ implementation
end.
{
$Log$
Revision 1.43 2003-09-28 13:39:58 peter
Revision 1.44 2003-11-07 15:58:32 florian
* Florian's culmutative nr. 1; contains:
- invalid calling conventions for a certain cpu are rejected
- arm softfloat calling conventions
- -Sp for cpu dependend code generation
- several arm fixes
- remaining code for value open array paras on heap
Revision 1.43 2003/09/28 13:39:58 peter
* default calling convention changed to stdcall
Revision 1.42 2003/09/07 22:09:35 peter

View File

@ -26,6 +26,9 @@ Unit cpuinfo;
Interface
uses
globtype;
Type
{ Natural integer register type and size for the target machine }
AWord = longword;
@ -50,8 +53,10 @@ Type
tprocessors =
(no_processor,
Class386,
ClassP5,
ClassP6
ClassPentium,
ClassPentium2,
ClassPentium3,
ClassPentium4
);
tfputype =
@ -79,13 +84,50 @@ Const
}
jmp_buf_size = 24;
{ calling conventions supported by the code generator }
supported_calling_conventions = [
pocall_internproc,
pocall_compilerproc,
pocall_inline,
pocall_register,
pocall_safecall,
pocall_stdcall,
pocall_cdecl,
pocall_cppdecl,
pocall_far16,
pocall_pascal,
pocall_oldfpccall
];
processorsstr : array[tprocessors] of string[10] = ('',
'386',
'PENTIUM',
'PENTIUM2',
'PENTIUM3',
'PENTIUM4'
);
fputypestr : array[tfputype] of string[6] = ('',
'SOFT',
'X87',
'SSE',
'SSE2'
);
Implementation
end.
{
$Log$
Revision 1.17 2003-09-03 11:18:37 florian
Revision 1.18 2003-11-07 15:58:32 florian
* Florian's culmutative nr. 1; contains:
- invalid calling conventions for a certain cpu are rejected
- arm softfloat calling conventions
- -Sp for cpu dependend code generation
- several arm fixes
- remaining code for value open array paras on heap
Revision 1.17 2003/09/03 11:18:37 florian
* fixed arm concatcopy
+ arm support in the common compiler sources added
* moved some generic cg code around

View File

@ -79,28 +79,15 @@ begin
Begin
Case opt[j+1] Of
'1': initoptprocessor := Class386;
'2': initoptprocessor := ClassP5;
'3': initoptprocessor := ClassP6
'2': initoptprocessor := ClassPentium;
'3': initoptprocessor := ClassPentium2;
'4': initoptprocessor := ClassPentium4;
Else IllegalPara(Opt)
End;
Inc(j);
End
Else IllegalPara(opt)
End;
{$ifdef USECMOV}
's' :
Begin
If j < Length(Opt) Then
Begin
Case opt[j+1] Of
'3': initspecificoptprocessor:=ClassP6
Else IllegalPara(Opt)
End;
Inc(j);
End
Else IllegalPara(opt)
End
{$endif USECMOV}
else IllegalPara(opt);
End;
Inc(j)
@ -129,7 +116,15 @@ initialization
end.
{
$Log$
Revision 1.10 2003-08-09 18:56:54 daniel
Revision 1.11 2003-11-07 15:58:32 florian
* Florian's culmutative nr. 1; contains:
- invalid calling conventions for a certain cpu are rejected
- arm softfloat calling conventions
- -Sp for cpu dependend code generation
- several arm fixes
- remaining code for value open array paras on heap
Revision 1.10 2003/08/09 18:56:54 daniel
* cs_regalloc renamed to cs_regvars to avoid confusion with register
allocator
* Some preventive changes to i386 spillinh code

View File

@ -139,7 +139,7 @@ implementation
else
if (pop_size=8) and
not(cs_littlesize in aktglobalswitches) and
(aktoptprocessor=ClassP5) then
(aktoptprocessor=ClassPentium) then
begin
hreg:=cg.getintregister(exprasmlist,OS_INT);
exprasmlist.concat(taicpu.op_reg(A_POP,S_L,hreg));
@ -164,7 +164,15 @@ begin
end.
{
$Log$
Revision 1.98 2003-10-10 17:48:14 peter
Revision 1.99 2003-11-07 15:58:32 florian
* Florian's culmutative nr. 1; contains:
- invalid calling conventions for a certain cpu are rejected
- arm softfloat calling conventions
- -Sp for cpu dependend code generation
- several arm fixes
- remaining code for value open array paras on heap
Revision 1.98 2003/10/10 17:48:14 peter
* old trgobj moved to x86/rgcpu and renamed to trgx86fpu
* tregisteralloctor renamed to trgobj
* removed rgobj from a lot of units

View File

@ -508,10 +508,12 @@ implementation
{ a jump table crashes the pipeline! }
if aktoptprocessor=Class386 then
inc(max_linear_list,3)
else if aktoptprocessor=ClassP5 then
else if aktoptprocessor=ClassPentium then
inc(max_linear_list,6)
else if aktoptprocessor>=ClassP6 then
inc(max_linear_list,9);
else if aktoptprocessor in [ClassPentium2,ClassPentium3] then
inc(max_linear_list,9)
else if aktoptprocessor=ClassPentium4 then
inc(max_linear_list,14);
end;
@ -672,7 +674,15 @@ begin
end.
{
$Log$
Revision 1.69 2003-10-10 17:48:14 peter
Revision 1.70 2003-11-07 15:58:32 florian
* Florian's culmutative nr. 1; contains:
- invalid calling conventions for a certain cpu are rejected
- arm softfloat calling conventions
- -Sp for cpu dependend code generation
- several arm fixes
- remaining code for value open array paras on heap
Revision 1.69 2003/10/10 17:48:14 peter
* old trgobj moved to x86/rgcpu and renamed to trgx86fpu
* tregisteralloctor renamed to trgobj
* removed rgobj from a lot of units

View File

@ -1672,9 +1672,7 @@ end;
Procedure PeepHoleOptPass2(AsmL: TAAsmOutput; BlockStart, BlockEnd: Tai);
{$ifdef USECMOV}
function CanBeCMOV(p : Tai) : boolean;
begin
CanBeCMOV:=assigned(p) and (p.typ=ait_instruction) and
(Taicpu(p).opcode=A_MOV) and
@ -1682,7 +1680,6 @@ Procedure PeepHoleOptPass2(AsmL: TAAsmOutput; BlockStart, BlockEnd: Tai);
(Taicpu(p).oper[0].typ in [top_reg,top_ref]) and
(Taicpu(p).oper[1].typ in [top_reg]);
end;
{$endif USECMOV}
var
p,hp1,hp2: Tai;
@ -1705,7 +1702,7 @@ Begin
Case Taicpu(p).opcode Of
{$ifdef USECMOV}
A_Jcc:
if (aktspecificoptprocessor=ClassP6) then
if (aktspecificoptprocessor>=ClassPentium2) then
begin
{ check for
jCC xxx
@ -2058,7 +2055,15 @@ End.
{
$Log$
Revision 1.48 2003-08-09 18:56:54 daniel
Revision 1.49 2003-11-07 15:58:32 florian
* Florian's culmutative nr. 1; contains:
- invalid calling conventions for a certain cpu are rejected
- arm softfloat calling conventions
- -Sp for cpu dependend code generation
- several arm fixes
- remaining code for value open array paras on heap
Revision 1.48 2003/08/09 18:56:54 daniel
* cs_regalloc renamed to cs_regvars to avoid confusion with register
allocator
* Some preventive changes to i386 spillinh code

View File

@ -62,12 +62,34 @@ Const
{ target cpu string (used by compiler options) }
target_cpu_string = 'm68k';
{ calling conventions supported by the code generator }
supported_calling_conventions = [
pocall_internproc,
pocall_compilerproc,
pocall_inline,
pocall_stdcall,
{ the difference to stdcall is only the name mangling }
pocall_cdecl,
{ the difference to stdcall is only the name mangling }
pocall_cppdecl,
{ this used by the PalmOS port only }
pocall_syscall
];
Implementation
end.
{
$Log$
Revision 1.6 2002-12-14 15:02:03 carl
Revision 1.7 2003-11-07 15:58:32 florian
* Florian's culmutative nr. 1; contains:
- invalid calling conventions for a certain cpu are rejected
- arm softfloat calling conventions
- -Sp for cpu dependend code generation
- several arm fixes
- remaining code for value open array paras on heap
Revision 1.6 2002/12/14 15:02:03 carl
* maxoperands -> max_operands (for portability in rautils.pas)
* fix some range-check errors with loadconst
+ add ncgadd unit to m68k

View File

@ -909,6 +909,9 @@ parser_e_msg_only_for_classes=03193_E_Message directive is only allowed in Class
% The message directive is only supported for Class types.
parser_e_procedure_or_function_expected=03194_E_Procedure or Function expected
% A class method can only be specified for procedures and functions.
parser_e_illegal_calling_convention=03195_E_This calling convention isn't supported by the current CPU target: "$1"
% Some calling conventions are supported only by certain CPUs. I.e. most non-i386 ports support
% only the standard ABI calling convention of the CPU.
% \end{description}
#
# Type Checking

View File

@ -253,6 +253,7 @@ const
parser_e_initialized_not_for_threadvar=03192;
parser_e_msg_only_for_classes=03193;
parser_e_procedure_or_function_expected=03194;
parser_e_illegal_calling_convention=03195;
type_e_mismatch=04000;
type_e_incompatible_types=04001;
type_e_not_equal_types=04002;
@ -630,9 +631,9 @@ const
option_info=11024;
option_help_pages=11025;
MsgTxtSize = 35734;
MsgTxtSize = 35814;
MsgIdxMax : array[1..20] of longint=(
17,63,195,53,57,44,98,20,35,60,
17,63,196,53,57,44,98,20,35,60,
40,1,1,1,1,1,1,1,1,1
);

View File

@ -1,7 +1,7 @@
{$ifdef Delphi}
const msgtxt : array[0..000148] of string[240]=(
const msgtxt : array[0..000149] of string[240]=(
{$else Delphi}
const msgtxt : array[0..000148,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+
@ -285,587 +285,589 @@ const msgtxt : array[0..000148,1..240] of char=(
'03192_E_Cannot initialize variables declared as threadvar'#000+
'03193_E_Message directive is only allowed in Cla','sses'#000+
'03194_E_Procedure or Function expected'#000+
'03195_E_This calling convention isn'#039't supported by the current CPU'+
' target: "$1"'#000+
'04000_E_Type mismatch'#000+
'04001_E_Incompatible types: got "$1" expected "$2"'#000+
'04002_E_Type mismatch between "$1" and "$2"'#000+
'04002_E_Type mismatch between "$1" and "$2"',#000+
'04003_E_Type identifier expected'#000+
'04004_E_Variable identifier expected'#000+
'04005_E_I','nteger expression expected, but got "$1"'#000+
'04005_E_Integer expression expected, but got "$1"'#000+
'04006_E_Boolean expression expected, but got "$1"'#000+
'04007_E_Ordinal expression expected'#000+
'04008_E_pointer type expected, but got "$1"'#000+
'04008_E_pointer type expected, bu','t got "$1"'#000+
'04009_E_class type expected, but got "$1"'#000+
'04011_E_Can'#039't evaluate cons','tant expression'#000+
'04011_E_Can'#039't evaluate constant expression'#000+
'04012_E_Set elements are not compatible'#000+
'04013_E_Operation not implemented for sets'#000+
'04014_W_Automatic type conversion from floating type to COMP which is '+
'an integer type'#000+
'04014_W_Automatic type conversion from floating type to COMP ','which i'+
's an integer type'#000+
'04015_H_use DIV instead to get an integer result'#000+
'04016_','E_string types doesn'#039't match, because of $V+ mode'#000+
'04016_E_string types doesn'#039't match, because of $V+ mode'#000+
'04017_E_succ or pred on enums with assignments not possible'#000+
'04018_E_Can'#039't read or write variables of this type'#000+
'04018_E_Can'#039't read or write variables of this type',#000+
'04019_E_Can'#039't use readln or writeln on typed file'#000+
'04020_E_Can'#039't use read or wri','te on untyped file.'#000+
'04020_E_Can'#039't use read or write on untyped file.'#000+
'04021_E_Type conflict between set elements'#000+
'04022_W_lo/hi(dword/qword) returns the upper/lower word/dword'#000+
'04023_E_Integer or real expression expected'#000+
'04023_E_Integer or real expression ','expected'#000+
'04024_E_Wrong type "$1" in array constructor'#000+
'04025_E_Incompatible type ','for arg no. $1: Got "$2", expected "$3"'#000+
'04025_E_Incompatible type for arg no. $1: Got "$2", expected "$3"'#000+
'04026_E_Method (variable) and Procedure (variable) are not compatible'#000+
'04027_E_Illegal constant passed to internal math function'#000+
'04027_E_Illegal constant passed to internal math f','unction'#000+
'04028_E_Can'#039't get the address of constants'#000+
'04029_E_Argument can'#039't be ass','igned to'#000+
'04029_E_Argument can'#039't be assigned to'#000+
'04030_E_Can'#039't assign local procedure/function to procedure variabl'+
'e'#000+
'04031_E_Can'#039't assign values to an address'#000+
'04032_E_Can'#039't assign values to const variable'#000+
'04032_E_Can'#039't assign values to const vari','able'#000+
'04033_E_Array type required'#000+
'04034_E_interface type expected, but got "$1"'#000+
'0','4035_W_Mixing signed expressions and longwords gives a 64bit result'+
#000+
'04035_W_Mixing signed expressions and longwords gives a 64bit result'#000+
'04036_W_Mixing signed expressions and cardinals here may cause a range'+
' check error'#000+
'04037_E_Typecast has different size ($1 -> $2) in assignment'#000+
'04038_E_enums with assignmen','ts can'#039't be used as array index'#000+
'04037_E_T','ypecast has different size ($1 -> $2) in assignment'#000+
'04038_E_enums with assignments can'#039't be used as array index'#000+
'04039_E_Class or Object types "$1" and "$2" are not related'#000+
'04040_W_Class types "$1" and "$2" are not related'#000+
'04041_E_Class or interface type expected, but got "$1"'#000+
'04042_E_Type "$1" is not completely defined',#000+
'04041_E_Class or i','nterface type expected, but got "$1"'#000+
'04042_E_Type "$1" is not completely defined'#000+
'04043_W_String literal has more characters than short string length'#000+
'04044_W_Comparison is always false due to range of values'#000+
'04045_W_Comparison is always true due to range of values'#000+
'04046_W_Constructing a class "$1" with abstract methods'#000,
'04045_W_Comparison is always true',' due to range of values'#000+
'04046_W_Constructing a class "$1" with abstract methods'#000+
'04047_H_The left operand of the IN operator should be byte sized'#000+
'04048_W_Type size mismatch, possible loss of data / range check error'#000+
'04049_H_Type size mismatch, possible loss of data / range check error'#000+
'04050_E_The address of an abstract ','method can'#039't be taken'#000+
'04049_H_Type size mismatc','h, possible loss of data / range check erro'+
'r'#000+
'04050_E_The address of an abstract method can'#039't be taken'#000+
'04051_E_The operator is not applicable for the operand type'#000+
'04052_E_Constant Expression expected'#000+
'05000_E_Identifier not found "$1"'#000+
'05001_F_Internal Error in SymTableStack()'#000+
'05001_F','_Internal Error in SymTableStack()'#000+
'05002_E_Duplicate identifier "$1"'#000+
'05003_H_Ide','ntifier already defined in $1 at line $2'#000+
'05003_H_Identifier already defined in $1 at line $2'#000+
'05004_E_Unknown identifier "$1"'#000+
'05005_E_Forward declaration not solved "$1"'#000+
'05007_E_Error in type definition'#000+
'05009_E_Forward type not resolved "$1"'#000+
'05010_E_Only static variables can be used in static',' methods or outsi'+
'de methods'#000+
'05009_E_Fo','rward type not resolved "$1"'#000+
'05010_E_Only static variables can be used in static methods or outside'+
' methods'#000+
'05012_F_record or class type expected'#000+
'05013_E_Instances of classes or objects with an abstract method are no'+
't allowed'#000+
'05014_W_Label not defined "$1"'#000+
'05014_W_Label ','not defined "$1"'#000+
'05015_E_Label used but not defined "$1"'#000+
'05016_E_Illegal label d','eclaration'#000+
'05016_E_Illegal label declaration'#000+
'05017_E_GOTO and LABEL are not supported (use switch -Sg)'#000+
'05018_E_Label not found'#000+
'05019_E_identifier isn'#039't a label'#000+
'05020_E_label already defined'#000+
'05021_E_illegal type declaration of set elements'#000+
'05022_E_Forward class definition no','t resolved "$1"'#000+
'0502','1_E_illegal type declaration of set elements'#000+
'05022_E_Forward class definition not resolved "$1"'#000+
'05023_H_Unit "$1" not used in $2'#000+
'05024_H_Parameter "$1" not used'#000+
'05025_N_Local variable "$1" not used'#000+
'05026_H_Value parameter "$1" is assigned but never used'#000+
'05026_H_Value parameter "$1" is assigned b','ut never used'#000+
'05027_N_Local variable "$1" is assigned but never used'#000+
'05028_H_Loc','al $1 "$2" is not used'#000+
'05028_H_Local $1 "$2" is not used'#000+
'05029_N_Private field "$1.$2" is never used'#000+
'05030_N_Private field "$1.$2" is assigned but never used'#000+
'05031_N_Private method "$1.$2" never used'#000+
'05031_N_Private method "$1.$2" never',' used'#000+
'05032_E_Set type expected'#000+
'05033_W_Function result does not seem to be set'#000,
'05033_W_Function result does not seem to be set'#000+
'05034_W_Type "$1" is not aligned correctly in current record for C'#000+
'05035_E_Unknown record field identifier "$1"'#000+
'05036_W_Local variable "$1" does not seem to be initialized'#000+
'05036_W_Local variable "$1" does not seem to be ','initialized'#000+
'05037_W_Variable "$1" does not seem to be initialized'#000+
'05038_E_identi','fier idents no member "$1"'#000+
'05038_E_identifier idents no member "$1"'#000+
'05039_H_Found declaration: $1'#000+
'05040_E_Data element too large'#000+
'05042_E_No matching implementation for interface method "$1" found'#000+
'05043_W_Symbol "$1" is deprecated'#000+
'05043','_W_Symbol "$1" is deprecated'#000+
'05044_W_Symbol "$1" is not portable'#000+
'05055_W_Symbol ','"$1" is not implemented'#000+
'05055_W_Symbol "$1" is not implemented'#000+
'05056_E_Can'#039't create unique type from this type'#000+
'06000_E_BREAK not allowed'#000+
'06001_E_CONTINUE not allowed'#000+
'06002_E_Expression too complicated - FPU stack overflow'#000+
'06002_E_Expression too complicate','d - FPU stack overflow'#000+
'06003_E_Illegal expression'#000+
'06004_E_Invalid integer expres','sion'#000+
'06004_E_Invalid integer expression'#000+
'06005_E_Illegal qualifier'#000+
'06006_E_High range limit < low range limit'#000+
'06007_E_Illegal counter variable'#000+
'06008_E_Can'#039't determine which overloaded function to call'#000+
'06008_E_Can'#039't determine which overloaded function to ','call'#000+
'06009_E_Parameter list size exceeds 65535 bytes'#000+
'06010_E_Illegal type conver','sion'#000+
'06010_E_Illegal type conversion'#000+
'06011_H_Conversion between ordinals and pointers are not portable'#000+
'06012_E_File types must be var parameters'#000+
'06013_E_The use of a far pointer isn'#039't allowed there'#000+
'06013_E_The use of a far pointer isn'#039't allowed ','there'#000+
'06014_E_illegal call by reference parameters'#000+
'06015_E_EXPORT declared funct','ions can'#039't be called'#000+
'06015_E_EXPORT declared functions can'#039't be called'#000+
'06016_W_Possible illegal call of constructor or destructor'#000+
'06017_N_Inefficient code'#000+
'06018_W_unreachable code'#000+
'06020_E_Abstract methods can'#039't be called directly'#000+
'06020_E_Abstract methods can'#039't',' be called directly'#000+
'06027_DL_Register $1 weight $2 $3'#000+
'06029_DL_Stack frame is om','itted'#000+
'06029_DL_Stack frame is omitted'#000+
'06031_E_Object or class methods can'#039't be inline.'#000+
'06032_E_Procvar calls cannot be inline.'#000+
'06033_E_No code for inline procedure stored'#000+
'06035_E_Element zero of an ansi/wide- or longstring can'#039't be acces'+
'sed, use (set)length instead'#000+
'06037_','E_Constructors or destructors can not be called inside a '#039'w'+
'ith'#039' clause'#000+
'06035_E_Element zero ','of an ansi/wide- or longstring can'#039't be acc'+
'essed, use (set)length instead'#000+
'06037_E_Constructors or destructors can not be called inside a '#039'wi'+
'th'#039' clause'#000+
'06038_E_Cannot call message handler methods directly'#000+
'06039_E_Jump in or outside of an exception block'#000+
'06039_E_Jump in or outside of an exc','eption block'#000+
'06040_E_Control flow statements aren'#039't allowed in a finally block'#000+
'0','6041_W_Parameters size exceeds limit for certain cpu'#039's'#000+
'06041_W_Parameters size exceeds limit for certain cpu'#039's'#000+
'06042_W_Local variable size exceed limit for certain cpu'#039's'#000+
'06043_E_Local variables size exceeds supported limit'#000+
'06043_E_Local variables size exceeds supported',' limit'#000+
'07000_DL_Starting $1 styled assembler parsing'#000+
'07001_DL_Finished $1 styled',' assembler parsing'#000+
'07001_DL_Finished $1 styled assembler parsing'#000+
'07002_E_Non-label pattern contains @'#000+
'07004_E_Error building record offset'#000+
'07005_E_OFFSET used without identifier'#000+
'07006_E_TYPE used without identifier'#000+
'07006_E_TYPE used without id','entifier'#000+
'07007_E_Cannot use local variable or parameters here'#000+
'07008_E_need to us','e OFFSET here'#000+
'07008_E_need to use OFFSET here'#000+
'07009_E_need to use $ here'#000+
'07010_E_Cannot use multiple relocatable symbols'#000+
'07011_E_Relocatable symbol can only be added'#000+
'07012_E_Invalid constant expression'#000+
'07012_E_Invalid constant e','xpression'#000+
'07013_E_Relocatable symbol is not allowed'#000+
'07014_E_Invalid reference sy','ntax'#000+
'07014_E_Invalid reference syntax'#000+
'07015_E_You can not reach $1 from that code'#000+
'07016_E_Local symbols/labels aren'#039't allowed as references'#000+
'07017_E_Invalid base and index register usage'#000+
'07018_W_Possible error in object field handling'#000+
'07018_W','_Possible error in object field handling'#000+
'07019_E_Wrong scale factor specified'#000+
'07','020_E_Multiple index register usage'#000+
'07020_E_Multiple index register usage'#000+
'07021_E_Invalid operand type'#000+
'07022_E_Invalid string as opcode operand: $1'#000+
'07023_W_@CODE and @DATA not supported'#000+
'07024_E_Null label references are not allowed'#000+
'07024_E_Null',' label references are not allowed'#000+
'07025_E_Divide by zero in asm evaluator'#000+
'07026_','E_Illegal expression'#000+
'07026_E_Illegal expression'#000+
'07027_E_escape sequence ignored: $1'#000+
'07028_E_Invalid symbol reference'#000+
'07029_W_Fwait can cause emulation problems with emu387'#000+
'07030_W_$1 without operand translated into $1P'#000+
'07031_W_ENTER instruction is not supported by Li','nux kernel'#000+
'07030_W_$1 with','out operand translated into $1P'#000+
'07031_W_ENTER instruction is not supported by Linux kernel'#000+
'07032_W_Calling an overload function in assembler'#000+
'07033_E_Unsupported symbol type for operand'#000+
'07034_E_Constant value out of bounds'#000+
'07035_E_Error converting decimal $1'#000+
'07035_E_Error conv','erting decimal $1'#000+
'07036_E_Error converting octal $1'#000+
'07037_E_Error converting bin','ary $1'#000+
'07037_E_Error converting binary $1'#000+
'07038_E_Error converting hexadecimal $1'#000+
'07039_H_$1 translated to $2'#000+
'07040_W_$1 is associated to an overloaded function'#000+
'07041_E_Cannot use SELF outside a method'#000+
'07041_E_Cannot use SELF outside a ','method'#000+
'07042_E_Cannot use OLDEBP outside a nested procedure'#000+
'07043_W_Procedures c','an'#039't return any value in asm code'#000+
'07043_W_Procedures can'#039't return any value in asm code'#000+
'07044_E_SEG not supported'#000+
'07045_E_Size suffix and destination or source size do not match'#000+
'07046_W_Size suffix and destination or source size do not match'#000+
'07046_W_Size suffix and destination ','or source size do not match'#000+
'07047_E_Assembler syntax error'#000+
'07048_E_Invalid combi','nation of opcode and operands'#000+
'07048_E_Invalid combination of opcode and operands'#000+
'07049_E_Assembler syntax error in operand'#000+
'07050_E_Assembler syntax error in constant'#000+
'07051_E_Invalid String expression'#000+
'07052_W_constant with symbol $1 for address which is not on a pointer'#000+
'07053_E_Unrecognized ','opcode $1'#000+
'07052_W_con','stant with symbol $1 for address which is not on a pointe'+
'r'#000+
'07053_E_Unrecognized opcode $1'#000+
'07054_E_Invalid or missing opcode'#000+
'07055_E_Invalid combination of prefix and opcode: $1'#000+
'07056_E_Invalid combination of override and opcode: $1'#000+
'07057_E_Too many operands on line'#000+
'07057_E_','Too many operands on line'#000+
'07058_W_NEAR ignored'#000+
'07059_W_FAR ignored'#000+
'07060_E_Dupli','cate local symbol $1'#000+
'07060_E_Duplicate local symbol $1'#000+
'07061_E_Undefined local symbol $1'#000+
'07062_E_Unknown label identifier $1'#000+
'07063_E_Invalid register name'#000+
'07064_E_Invalid floating point register name'#000+
'07064_E_Invalid floating point register',' name'#000+
'07066_W_Modulo not supported'#000+
'07067_E_Invalid floating point constant $1'#000+
'07','068_E_Invalid floating point expression'#000+
'07068_E_Invalid floating point expression'#000+
'07069_E_Wrong symbol type'#000+
'07070_E_Cannot index a local var or parameter with a register'#000+
'07071_E_Invalid segment override expression'#000+
'07071_E_Invalid segment override',' expression'#000+
'07072_W_Identifier $1 supposed external'#000+
'07073_E_Strings not allowed ','as constants'#000+
'07073_E_Strings not allowed as constants'#000+
'07074_No type of variable specified'#000+
'07075_E_assembler code not returned to text section'#000+
'07076_E_Not a directive or local symbol $1'#000+
'07077_E_Using a defined name as a local label'#000+
'07078_E_Dollar token is used without an identifier',#000+
'07077_E_Using a ','defined name as a local label'#000+
'07078_E_Dollar token is used without an identifier'#000+
'07079_W_32bit constant created for address'#000+
'07080_N_.align is target specific, use .balign or .p2align'#000+
'07081_E_Can'#039't access fields directly for parameters'#000+
'07082_E_Can'#039't access fields of objects/classes directly'#000+
'07083_E_No size specified and',' unable to determine the size of the op'+
'erands'#000+
'07082','_E_Can'#039't access fields of objects/classes directly'#000+
'07083_E_No size specified and unable to determine the size of the oper'+
'ands'#000+
'07084_E_Cannot use RESULT in this function'#000+
'07086_W_"$1" without operand translated into "$1 %st,%st(1)"'#000+
'07087_W_"$1 %st(n)" translated into "$1 %st,%st(n)"'#000+
'07088_W_"$1 %st(n)" translated into "$','1 %st(n),%st"'#000+
'07087_W_"$','1 %st(n)" translated into "$1 %st,%st(n)"'#000+
'07088_W_"$1 %st(n)" translated into "$1 %st(n),%st"'#000+
'07089_E_Char < not allowed here'#000+
'07090_E_Char > not allowed here'#000+
'07093_W_ALIGN not supported'#000+
'07094_E_Inc and Dec cannot be together'#000+
'07095_E_Invalid reglist for movem'#000+
'07095_E_Invalid',' reglist for movem'#000+
'07096_E_Reglist invalid for opcode'#000+
'07097_E_Higher cpu mode re','quired ($1)'#000+
'07097_E_Higher cpu mode required ($1)'#000+
'08000_F_Too many assembler files'#000+
'08001_F_Selected assembler output not supported'#000+
'08002_F_Comp not supported'#000+
'08003_F_Direct not support for binary writers'#000+
'08003_F_Direct not support for binary wr','iters'#000+
'08004_E_Allocating of data is only allowed in bss section'#000+
'08005_F_No binar','y writer selected'#000+
'08005_F_No binary writer selected'#000+
'08006_E_Asm: Opcode $1 not in table'#000+
'08007_E_Asm: $1 invalid combination of opcode and operands'#000+
'08008_E_Asm: 16 Bit references not supported'#000+
'08009_E_Asm: Invalid effective address'#000+
'08010_E_Asm: Immediate or reference expecte','d'#000+
'08','009_E_Asm: Invalid effective address'#000+
'08010_E_Asm: Immediate or reference expected'#000+
'08011_E_Asm: $1 value exceeds bounds $2'#000+
'08012_E_Asm: Short jump is out of range $1'#000+
'08013_E_Asm: Undefined label $1'#000+
'08014_E_Asm: Comp type not supported for this target'#000+
'08014_E_Asm: Comp type not supported for th','is target'#000+
'08015_E_Asm: Extended type not supported for this target'#000+
'08016_E_Asm: ','Duplicate label $1'#000+
'08016_E_Asm: Duplicate label $1'#000+
'08017_E_Asm: Redefined label $1'#000+
'08018_E_Asm: First defined here'#000+
'08019_E_Asm: Invalid register $1'#000+
'09000_W_Source operating system redefined'#000+
'09001_I_Assembling (pipe) $1'#000+
'09','001_I_Assembling (pipe) $1'#000+
'09002_E_Can'#039't create assember file: $1'#000+
'09003_E_Can'#039't ','create object file: $1'#000+
'09003_E_Can'#039't create object file: $1'#000+
'09004_E_Can'#039't create archive file: $1'#000+
'09005_E_Assembler $1 not found, switching to external assembling'#000+
'09006_T_Using assembler: $1'#000+
'09007_E_Error while assembling exitcode $1'#000+
'09008_E_Can'#039't call the assembler, error $1 ','switching to external'+
' assembling'#000+
'09007_','E_Error while assembling exitcode $1'#000+
'09008_E_Can'#039't call the assembler, error $1 switching to external a'+
'ssembling'#000+
'09009_I_Assembling $1'#000+
'09010_I_Assembling with smartlinking $1'#000+
'09011_W_Object $1 not found, Linking may fail !'#000+
'09012_W_Library $1 not found, Linking may fail !'#000+
'09012_W_Library $','1 not found, Linking may fail !'#000+
'09013_E_Error while linking'#000+
'09014_E_Can'#039't call t','he linker, switching to external linking'#000+
'09014_E_Can'#039't call the linker, switching to external linking'#000+
'09015_I_Linking $1'#000+
'09016_E_Util $1 not found, switching to external linking'#000+
'09017_T_Using util $1'#000+
'09018_E_Creation of Executables not supported'#000+
'09019_E_Creation of Dynamic/Shared Libraries not suppor','ted'#000+
'09018_E_Creation of E','xecutables not supported'#000+
'09019_E_Creation of Dynamic/Shared Libraries not supported'#000+
'09020_I_Closing script $1'#000+
'09021_E_resource compiler not found, switching to external mode'#000+
'09022_I_Compiling resource $1'#000+
'09023_T_unit $1 can'#039't be statically linked, switching to smart lin'+
'king'#000+
'09024_T_unit $1 can'#039't be smart linked, switch','ing to static linki'+
'ng'#000+
'09023_T_unit $1 can'#039't be statically ','linked, switching to smart l'+
'inking'#000+
'09024_T_unit $1 can'#039't be smart linked, switching to static linking'+
#000+
'09025_T_unit $1 can'#039't be shared linked, switching to static linkin'+
'g'#000+
'09026_E_unit $1 can'#039't be smart or static linked'#000+
'09027_E_unit $1 can'#039't be shared or static linked'#000+
'09027_E_unit $1 can'#039't ','be shared or static linked'#000+
'09028_F_Can'#039't post process executable $1'#000+
'09029_F_Can'#039,'t open executable $1'#000+
'09029_F_Can'#039't open executable $1'#000+
'09030_X_Size of Code: $1 bytes'#000+
'09031_X_Size of initialized data: $1 bytes'#000+
'09032_X_Size of uninitialized data: $1 bytes'#000+
'09033_X_Stack space reserved: $1 bytes'#000+
'09033_X_Stack space ','reserved: $1 bytes'#000+
'09034_X_Stack space commited: $1 bytes'#000+
'10000_T_Unitsearch: $1',#000+
'10000_T_Unitsearch: $1'#000+
'10001_T_PPU Loading $1'#000+
'10002_U_PPU Name: $1'#000+
'10003_U_PPU Flags: $1'#000+
'10004_U_PPU Crc: $1'#000+
'10005_U_PPU Time: $1'#000+
'10006_U_PPU File too short'#000+
'10007_U_PPU Invalid Header (no PPU at the begin)'#000+
'10007_U_PPU Invalid Heade','r (no PPU at the begin)'#000+
'10008_U_PPU Invalid Version $1'#000+
'10009_U_PPU is compiled f','or another processor'#000+
'10009_U_PPU is compiled for another processor'#000+
'10010_U_PPU is compiled for an other target'#000+
'10011_U_PPU Source: $1'#000+
'10012_U_Writing $1'#000+
'10013_F_Can'#039't Write PPU-File'#000+
'10014_F_Error reading PPU-File'#000+
'10014_F_Error reading PP','U-File'#000+
'10015_F_unexpected end of PPU-File'#000+
'10016_F_Invalid PPU-File entry: $1'#000+
'100','17_F_PPU Dbx count problem'#000+
'10017_F_PPU Dbx count problem'#000+
'10018_E_Illegal unit name: $1'#000+
'10019_F_Too much units'#000+
'10020_F_Circular unit reference between $1 and $2'#000+
'10021_F_Can'#039't compile unit $1, no sources available'#000+
'10021_F_Can'#039't compile unit $1,',' no sources available'#000+
'10022_F_Can'#039't find unit $1'#000+
'10023_W_Unit $1 was not found b','ut $2 exists'#000+
'10023_W_Unit $1 was not found but $2 exists'#000+
'10024_F_Unit $1 searched but $2 found'#000+
'10025_W_Compiling the system unit requires the -Us switch'#000+
'10026_F_There were $1 errors compiling module, stopping'#000+
'10026_F_There were $1 errors compiling module, stop','ping'#000+
'10027_U_Load from $1 ($2) unit $3'#000+
'10028_U_Recompiling $1, checksum changed ','for $2'#000+
'10028_U_Recompiling $1, checksum changed for $2'#000+
'10029_U_Recompiling $1, source found only'#000+
'10030_U_Recompiling unit, static lib is older than ppufile'#000+
'10031_U_Recompiling unit, shared lib is older than ppufile'#000+
'10031_U_Recompiling unit, shared lib is older than p','pufile'#000+
'10032_U_Recompiling unit, obj and asm are older than ppufile'#000+
'10033_U_Reco','mpiling unit, obj is older than asm'#000+
'10033_U_Recompiling unit, obj is older than asm'#000+
'10034_U_Parsing interface of $1'#000+
'10035_U_Parsing implementation of $1'#000+
'10036_U_Second load for unit $1'#000+
'10037_U_PPU Check file $1 time $2'#000+
'10038_H_Conditional $1 was not set at startup in last compilation of ',
'$2'#000+
'10037_U_PPU Check file ','$1 time $2'#000+
'10038_H_Conditional $1 was not set at startup in last compilation of $'+
'2'#000+
'10039_H_Conditional $1 was set at startup in last compilation of $2'#000+
'10040_W_Can'#039't recompile unit $1, but found modifed include files'#000+
'10041_H_File $1 is newer than Release PPU file $2'#000+
'10042_U_Using a unit which was not compiled with corre','ct FPU mode'#000+
'10041_H_File $1 is newer',' than Release PPU file $2'#000+
'10042_U_Using a unit which was not compiled with correct FPU mode'#000+
'10043_U_Loading interface units from $1'#000+
'10044_U_Loading implementation units from $1'#000+
'10045_U_Interface CRC changed for unit $1'#000+
'10046_U_Implementation CRC changed for unit $1'#000+
'10046_U_Implementatio','n CRC changed for unit $1'#000+
'10047_U_Finished compiling unit $1'#000+
'10048_U_Add depende','ncy of $1 to $2'#000+
'10048_U_Add dependency of $1 to $2'#000+
'10049_U_No reload, is caller: $1'#000+
'10050_U_No reload, already in second compile: $1'#000+
'10051_U_Flag for reload: $1'#000+
'10052_U_Forced reloading'#000+
'10053_U_Previous state of $1: $2'#000+
'10053_U_P','revious state of $1: $2'#000+
'10054_U_Already compiling $1, setting second compile'#000+
'100','55_U_Loading unit $1'#000+
'10055_U_Loading unit $1'#000+
'10056_U_Finished loading unit $1'#000+
'10057_U_Registering new unit $1'#000+
'10058_U_Re-resolving unit $1'#000+
'10059_U_Skipping re-resolving unit $1, still loading used units'#000+
'10059_U_Skipping re-resolving unit $1, still ','loading used units'#000+
'11000_$1 [options] <inputfile> [options]'#000+
'11001_W_Only one sou','rce file supported'#000+
'11001_W_Only one source file supported'#000+
'11002_W_DEF file can be created only for OS/2'#000+
'11003_E_nested response files are not supported'#000+
'11004_F_No source file name in command line'#000+
'11005_N_No option inside $1 config file'#000+
'110','05_N_No option inside $1 config file'#000+
'11006_E_Illegal parameter: $1'#000+
'11007_H_-? wr','ites help pages'#000+
'11007_H_-? writes help pages'#000+
'11008_F_Too many config files nested'#000+
'11009_F_Unable to open file $1'#000+
'11010_D_Reading further options from $1'#000+
'11011_W_Target is already set to: $1'#000+
'11011_W_Target is already set to: $1',#000+
'11012_W_Shared libs not supported on DOS platform, reverting to static'+
#000+
'11013_F_','too many IF(N)DEFs'#000+
'11013_F_too many IF(N)DEFs'#000+
'11014_F_too many ENDIFs'#000+
'11015_F_open conditional at the end of the file'#000+
'11016_W_Debug information generation is not supported by this executab'+
'le'#000+
'11016_W_Debug information generation is not supported by this executa',
'ble'#000+
'11017_H_Try recompiling with -dGDB'#000+
'11018_E_You are using the obsolete switch',' $1'#000+
'11018_E_You are using the obsolete switch $1'#000+
'11019_E_You are using the obsolete switch $1, please use $2'#000+
'11020_N_Switching assembler to default source writing assembler'#000+
'11021_W_Assembler output selected "$1" is not compatible with "$2"'#000+
'11021_W_Assembler output selecte','d "$1" is not compatible with "$2"'#000+
'11022_W_"$1" assembler use forced'#000+
'11026_T_Rea','ding options from file $1'#000+
'11026_T_Reading options from file $1'#000+
'11027_T_Reading options from environment $1'#000+
'11028_D_Handling option "$1"'#000+
'11029__*** press enter ***'#000+
'11030_H_Start of reading config file $1'#000+
'11030_H_Start of reading config fi','le $1'#000+
'11031_H_End of reading config file $1'#000+
'11032_D_interpreting option "$1"'#000+
'110','36_D_interpreting firstpass option "$1"'#000+
'11036_D_interpreting firstpass option "$1"'#000+
'11033_D_interpreting file option "$1"'#000+
'11034_D_Reading config file "$1"'#000+
'11035_D_found source file name "$1"'#000+
'11037_D_Defining symbol $1'#000+
'11037_D_Defin','ing symbol $1'#000+
'11038_D_Undefining symbol $1'#000+
'11039_E_Unknown code page'#000+
'11023_Free ','Pascal Compiler version $FPCVER [$FPCDATE] for $FPCTARGET'+
#010+
'11023_Free Pascal Compiler version $FPCVER [$FPCDATE] for $FPCTARGET'#010+
'Copyright (c) 1993-2002 by Florian Klaempfl'#000+
'11024_Free Pascal Compiler version $FPCVER'#010+
#010+
'Compiler Date : $FPCDATE'#010+
'Compiler Date ',' : $FPCDATE'#010+
'Compiler Target: $FPCTARGET'#010+
#010+
'Supported targets:'#010+
' $OSTARGETS'#010+
#010+
'This p','rogram comes under the GNU General Public Licence'#010+
'This program comes under the GNU General Public Licence'#010+
'For more information read COPYING.FPC'#010+
#010+
'Report bugs,suggestions etc to:'#010+
' bugrep@freepascal.org'#000+
' bugrep@freepascal.org'#000,
'11025_**0*_put + after a boolean switch option to enable it, - to disa'+
'ble it'#010+
'**1','a_the compiler doesn'#039't delete the generated assembler file'#010+
'**1a_the compiler doesn'#039't delete the generated assembler file'#010+
'**2al_list sourcecode lines in assembler file'#010+
'**2ar_list register allocation/release info in assembler file'#010+
'**2ar_list register allocation/release info in assemble','r file'#010+
'**2at_list temp allocation/release info in assembler file'#010+
'**1b_generate b','rowser info'#010+
'**1b_generate browser info'#010+
'**2bl_generate local symbol info'#010+
'**1B_build all modules'#010+
'**1C<x>_code generation options:'#010+
'**2CD_create also dynamic library (not supported)'#010+
'**2Ce_Compilation with emulated floating point opcodes'#010+
'**2Ch<n>_<n> bytes heap (between 1','023 and 67107840)'#010+
'**2Ce_Com','pilation with emulated floating point opcodes'#010+
'**2Ch<n>_<n> bytes heap (between 1023 and 67107840)'#010+
'**2Ci_IO-checking'#010+
'**2Cn_omit linking stage'#010+
'**2Co_check overflow of integer operations'#010+
'**2Cr_range checking'#010+
'**2CR_verify object method call validity'#010+
'**2CR_verify object method call val','idity'#010+
'**2Cs<n>_set stack size to <n>'#010+
'**2Ct_stack checking'#010+
'**2CX_create also smar','tlinked library'#010+
'**2CX_create also smartlinked library'#010+
'**1d<x>_defines the symbol <x>'#010+
'*O1D_generate a DEF file'#010+
'*O2Dd<x>_set description to <x>'#010+
'*O2Dw_PM application'#010+
'**1e<x>_set path to executable'#010+
'**1E_same as -Cn'#010+
'**1E','_same as -Cn'#010+
'**1F<x>_set file names and paths:'#010+
'**2FD<x>_sets the directory where',' to search for compiler utilities'#010+
'**2FD<x>_sets the directory where to search for compiler utilities'#010+
'**2Fe<x>_redirect error output to <x>'#010+
'**2FE<x>_set exe/unit output path to <x>'#010+
'**2Fi<x>_adds <x> to include path'#010+
'**2Fl<x>_adds <x> to library path'#010+
'**2Fl<x>_adds',' <x> to library path'#010+
'*L2FL<x>_uses <x> as dynamic linker'#010+
'**2Fo<x>_adds <x> to ob','ject path'#010+
'**2Fo<x>_adds <x> to object path'#010+
'**2Fr<x>_load error message file <x>'#010+
'**2Fu<x>_adds <x> to unit path'#010+
'**2FU<x>_set unit output path to <x>, overrides -FE'#010+
'*g1g_generate debugger information:'#010+
'*g1g_generate debugger informa','tion:'#010+
'*g2gg_use gsym'#010+
'*g2gd_use dbx'#010+
'*g2gh_use heap trace unit (for memory leak de','bugging)'#010+
'*g2gh_use heap trace unit (for memory leak debugging)'#010+
'*g2gl_use line info unit to show more info for backtraces'#010+
'*g2gc_generate checks for pointers'#010+
'**1i_information'#010+
'**2iD_return compiler date'#010+
'**2iV_return compiler version'#010+
'**2iV_return c','ompiler version'#010+
'**2iSO_return compiler OS'#010+
'**2iSP_return compiler processor'#010+
'**2iT','O_return target OS'#010+
'**2iTO_return target OS'#010+
'**2iTP_return target processor'#010+
'**1I<x>_adds <x> to include path'#010+
'**1k<x>_Pass <x> to the linker'#010+
'**1l_write logo'#010+
'**1M<x>_set language mode to <x>'#010+
'**1M<x>_set language mode to <','x>'#010+
'**2Mfpc_free pascal dialect (default)'#010+
'**2Mobjfpc_switch some Delphi 2 extensi','ons on'#010+
'**2Mobjfpc_switch some Delphi 2 extensions on'#010+
'**2Mdelphi_tries to be Delphi compatible'#010+
'**2Mtp_tries to be TP/BP 7.0 compatible'#010+
'**2Mgpc_tries to be gpc compatible'#010+
'**2Mmac_tries to be compatible to the macintosh pascal dialects'#010+
'**2Mmac_tries to be compatible to the',' macintosh pascal dialects'#010+
'**1n_don'#039't read the default config file'#010+
'**1o<x>_chang','e the name of the executable produced to <x>'#010+
'**1o<x>_change the name of the executable produced to <x>'#010+
'**1pg_generate profile code for gprof (defines FPC_PROFILE)'#010+
'*L1P_use pipes instead of creating temporary assembler files'#010+
'*L1P_use pipes instead of creating temporary assembler ','files'#010+
'**1S<x>_syntax options:'#010+
'**2S2_same as -Mobjfpc'#010+
'**2Sc_supports operators li','ke C (*=,+=,/= and -=)'#010+
'**2Sc_supports operators like C (*=,+=,/= and -=)'#010+
'**2Sa_include assertion code.'#010+
'**2Sd_same as -Mdelphi'#010+
'**2Se<x>_compiler stops after the <x> errors (default is 1)'#010+
'**2Sg_allow LABEL and GOTO'#010+
'**2Sg_allow LABEL and GO','TO'#010+
'**2Sh_Use ansistrings'#010+
'**2Si_support C++ styled INLINE'#010+
'**2Sm_support macros li','ke C (global)'#010+
'**2Sm_support macros like C (global)'#010+
'**2So_same as -Mtp'#010+
'**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+
'**2sh_Generate script to link on ho','st'#010+
'**1s_do','n'#039't call assembler and linker (only with -a)'#010+
'**2sh_Generate script to link on host'#010+
'**2sr_Skip register allocation phase (optimizations will be disabled)'#010+
'**2st_Generate script to link on target'#010+
'**1u<x>_undefines the symbol <x>'#010+
'**1U_unit options:'#010+
'**1U_unit opti','ons:'#010+
'**2Un_don'#039't check the unit name'#010+
'**2Ur_generate release unit files'#010+
'**2Us_com','pile a system unit'#010+
'**2Us_compile a system unit'#010+
'**1v<x>_Be verbose. <x> is a combination 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*_w : Show war','nings 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*_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 errors'+
')'#010+
'**2*_l : Sh','ow linenumbers c : Show conditionals'#010+
'**2*_a : Show everything 0 : Show nothing (except errors)'#010+
'**2*_b : Show all procedure r : Rhide/GCC compatibility mode'#010+
'**2*_ declarations if an error x : Executable info (Win32 only)'#010+
'**2*_ declarations if an error x : Executable ','info (Win32 only'+
')'#010+
'**2*_ occurs'#010+
'**1V_write fpcdebug.txt file with lots of debu','gging info'#010+
'**1V_write fpcdebug.txt file with lots of debugging info'#010+
'**1X_executable options:'#010+
'*L2Xc_link with the c library'#010+
'**2Xs_strip all symbols from executable'#010+
'**2XD_try to link dynamic (defines FPC_LINK_DYNAMIC)'#010+
'**2XD_try to link dynamic (defines FPC_LINK_D','YNAMIC)'#010+
'**2XS_try to link static (default) (defines FPC_LINK_STATIC)'#010+
'**2XX_try t','o link smart (defines FPC_LINK_SMART)'#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*2Anasmcoff_coff (Go32v2)',' file using Nasm'#010+
'3*2Anasmelf_elf32 (Linux) file using Nasm'#010+
'3*2Awasm_obj file usi','ng Wasm (Watcom)'#010+
'3*2Awasm_obj file using Wasm (Watcom)'#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*2Acoff_coff (Go32v2) using in','ternal writer'#010+
'3*2Apecoff_pecoff (Win32) using internal writer'#010+
'3*1R<x>_assembler ','reading style:'#010+
'3*1R<x>_assembler reading style:'#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*1O<x>_optimiza','tions:'#010+
'3*2Og_generate smaller code'#010+
'3*2OG_generate faster code (default)'#010+
'3*2Or_ke','ep certain variables in registers'#010+
'3*2Or_keep certain variables in registers'#010+
'3*2Ou_enable uncertain 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*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*3Op2_set target processor to Pentium/PentiumMMX (tm)'#010+
'3*3Op3_set target processor to PPro/PII/c6x86/K6 (tm)'#010+
'3*3Op3_set target processor to P','Pro/PII/c6x86/K6 (tm)'#010+
'3*1T<x>_Target operating system:'#010+
'3*2Temx_OS/2 via EMX (inc','luding EMX/RSX extender)'#010+
'3*2Temx_OS/2 via EMX (including EMX/RSX extender)'#010+
'3*2Tgo32v2_Version 2 of DJ 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*2','Tsunos_SunOS/Solaris'#010+
'3*2Twatcom_Watcom compatible DOS extender'#010+
'3*2Twdosx_WDOSX D','OS extender'#010+
'3*2Twdosx_WDOSX DOS extender'#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 typ','e application (OS/2 only)'#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_Specify graphic type application'#010+
'3*2WN_Do not generate relocation code (necessary for debugging)'#010+
'3*2WR_Generate relocation code'#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 assem','bler'#010+
'6*2Agas_GNU Motorola assembler'#010+
'6*2Amit_MIT Syntax (old GAS)'#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*2OG_generate',' faster code (default)'#010+
'6*2Ox_optimize maximum (still BUGGY!!!)'#010+
'6*2O0_set target ','processor to a MC68000'#010+
'6*2O0_set target processor to a MC68000'#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*1T<x>_Target ','operating system:'#010+
'6*2Tamiga_Commodore Amiga'#010+
'6*2Tatari_Atari ST/STe/TT'#010+
'6*2Tlinux_','Linux-68k'#010+
'6*2Tlinux_Linux-68k'#010+
'6*2Tmacos_Macintosh m68k'#010+
'6*2Tpalmos_PalmOS'#010+
'P*1T<x>_Target operating system:'#010+
'P*2Tlinux_Linux on PowerPC'#010+
'P*2Tmacos_MacOS (classic) on PowerPC'#010+
'**1*_'#010+
'**1?_shows this help'#010+
'**1?','_shows this help'#010+
'**1h_shows this help without waiting'#000
);

View File

@ -133,7 +133,9 @@ interface
procedure ResolveRef(var op:toper);
var
sym : tvarsym;
{$ifdef x86}
scale : byte;
{$endif x86}
getoffset : boolean;
indexreg : tregister;
sofs : longint;
@ -142,7 +144,9 @@ interface
begin
sofs:=op.localsymofs;
indexreg:=op.localindexreg;
{$ifdef x86}
scale:=op.localscale;
{$endif x86}
getoffset:=op.localgetoffset;
sym:=tvarsym(pointer(op.localsym));
case sym.localloc.loc of
@ -170,9 +174,9 @@ interface
reference_reset_base(op.ref^,sym.localloc.reference.index,
sym.localloc.reference.offset+sofs);
op.ref^.index:=indexreg;
{$ifdef i386}
{$ifdef x86}
op.ref^.scalefactor:=scale;
{$endif i386}
{$endif x86}
end;
end;
LOC_REGISTER :
@ -407,7 +411,15 @@ begin
end.
{
$Log$
Revision 1.50 2003-11-04 15:35:13 peter
Revision 1.51 2003-11-07 15:58:32 florian
* Florian's culmutative nr. 1; contains:
- invalid calling conventions for a certain cpu are rejected
- arm softfloat calling conventions
- -Sp for cpu dependend code generation
- several arm fixes
- remaining code for value open array paras on heap
Revision 1.50 2003/11/04 15:35:13 peter
* fix for referencecounted temps
Revision 1.49 2003/11/02 13:30:05 jonas

View File

@ -200,7 +200,7 @@ implementation
cg.a_paramfpu_reg(exprasmlist,def_cgsize(left.resulttype.def),left.location.register,tempparaloc);
LOC_REFERENCE,
LOC_CREFERENCE :
cg.a_paramfpu_ref(exprasmlist,def_cgsize(left.resulttype.def),left.location.reference,tempparaloc)
cg.a_paramfpu_ref(exprasmlist,def_cgsize(left.resulttype.def),left.location.reference,tempparaloc);
else
internalerror(200204243);
end;
@ -1133,7 +1133,15 @@ begin
end.
{
$Log$
Revision 1.137 2003-11-04 19:03:54 peter
Revision 1.138 2003-11-07 15:58:32 florian
* Florian's culmutative nr. 1; contains:
- invalid calling conventions for a certain cpu are rejected
- arm softfloat calling conventions
- -Sp for cpu dependend code generation
- several arm fixes
- remaining code for value open array paras on heap
Revision 1.137 2003/11/04 19:03:54 peter
* fixes for temp type patch
Revision 1.136 2003/11/04 15:35:13 peter

View File

@ -719,6 +719,10 @@ implementation
case hsym.localloc.loc of
LOC_REFERENCE :
begin
{ this code is only executed before the code for the body and the entry/exit code is generated
so we're allowed to include pi_do_call here; after pass1 is run, this isn't allowed anymore
}
include(current_procinfo.flags,pi_do_call);
reference_reset_base(href2,hsym.localloc.reference.index,hsym.localloc.reference.offset);
cg.g_copyvaluepara_openarray(list,href1,href2,tarraydef(tvarsym(p).vartype.def).elesize)
end
@ -890,7 +894,19 @@ implementation
reference_reset_base(href,tvarsym(p).localloc.reference.index,tvarsym(p).localloc.reference.offset);
cg.g_decrrefcount(list,tvarsym(p).vartype.def,href,is_open_array(tvarsym(p).vartype.def));
end;
end;
end
else if (tsym(p).typ=varsym) and
(is_open_array(tvarsym(p).vartype.def) or
is_array_of_const(tvarsym(p).vartype.def)) then
begin
{ cdecl functions don't have a high pointer so it is not possible to generate
a local copy }
if not(current_procinfo.procdef.proccalloption in [pocall_cdecl,pocall_cppdecl]) then
begin
reference_reset_base(href,tvarsym(p).localloc.reference.index,tvarsym(p).localloc.reference.offset);
cg.g_releasevaluepara_openarray(list,href);
end;
end;
end;
@ -1945,7 +1961,15 @@ implementation
end.
{
$Log$
Revision 1.164 2003-11-04 19:03:50 peter
Revision 1.165 2003-11-07 15:58:32 florian
* Florian's culmutative nr. 1; contains:
- invalid calling conventions for a certain cpu are rejected
- arm softfloat calling conventions
- -Sp for cpu dependend code generation
- several arm fixes
- remaining code for value open array paras on heap
Revision 1.164 2003/11/04 19:03:50 peter
* fixes for temp type patch
Revision 1.163 2003/11/04 15:35:13 peter

View File

@ -370,9 +370,7 @@ var
j,l : longint;
d : DirStr;
e : ExtStr;
{$ifdef arm}
s : string;
{$endif arm}
forceasm : tasm;
begin
if opt='' then
@ -495,26 +493,13 @@ begin
include(initmoduleswitches,cs_fp_emulation);
end;
{$endif cpufpemu}
{$ifdef arm}
'f' :
begin
s:=upper(copy(more,j+1,length(more)-j));
if s='SOFT' then
initfputype:=fpu_soft
else if s='FPA' then
initfputype:=fpu_fpa
else if s='FPA10' then
initfputype:=fpu_fpa10
else if s='FPA11' then
initfputype:=fpu_fpa11
else if s='VFP' then
initfputype:=fpu_vfp
else
if not(SetFpuType(s,true)) then
IllegalPara(opt);
break;
end;
{$endif arm}
'h' :
begin
val(copy(more,j+1,length(more)-j),heapsize,code);
@ -540,6 +525,13 @@ begin
exclude(initlocalswitches,cs_check_overflow)
Else
include(initlocalswitches,cs_check_overflow);
'p' :
begin
s:=upper(copy(more,j+1,length(more)-j));
if not(SetProcessor(s,true)) then
IllegalPara(opt);
break;
end;
'r' :
If UnsetBool(More, j) then
exclude(initlocalswitches,cs_check_range)
@ -1991,7 +1983,15 @@ finalization
end.
{
$Log$
Revision 1.113 2003-10-22 15:40:44 marco
Revision 1.114 2003-11-07 15:58:32 florian
* Florian's culmutative nr. 1; contains:
- invalid calling conventions for a certain cpu are rejected
- arm softfloat calling conventions
- -Sp for cpu dependend code generation
- several arm fixes
- remaining code for value open array paras on heap
Revision 1.113 2003/10/22 15:40:44 marco
* -Xc -Xr support
Revision 1.112 2003/10/18 09:14:18 hajny

View File

@ -74,6 +74,7 @@ implementation
{ global }
globtype,globals,verbose,
systems,
cpuinfo,
{ aasm }
aasmbase,
{ symtable }
@ -1190,7 +1191,7 @@ type
end;
const
{Should contain the number of procedure directives we support.}
num_proc_directives=34;
num_proc_directives=35;
proc_direcdata:array[1..num_proc_directives] of proc_dir_rec=
(
(
@ -1437,6 +1438,17 @@ const
mutexclpocall : [pocall_internproc];
mutexclpotype : [potype_constructor,potype_destructor];
mutexclpo : [po_external]
),(
idtok:_SOFTFLOAT;
pd_flags : [pd_interface,pd_implemen,pd_body,pd_procvar];
handler : nil;
pocall : pocall_softfloat;
pooption : [];
mutexclpocall : [];
mutexclpotype : [potype_constructor,potype_destructor];
{ it's available with po_external because the libgcc floating point routines on the arm
uses this calling convention }
mutexclpo : []
),(
idtok:_STATIC;
pd_flags : [pd_interface,pd_object,pd_notobjintf];
@ -1586,6 +1598,13 @@ const
proccalloptionStr[pd.proccalloption],
proccalloptionStr[proc_direcdata[p].pocall]);
end;
{ check if the target processor supports this calling convention }
if not(proc_direcdata[p].pocall in supported_calling_conventions) then
begin
Message1(parser_e_illegal_calling_convention,proccalloptionStr[proc_direcdata[p].pocall]);
{ recover }
proc_direcdata[p].pocall:=pocall_stdcall;
end;
pd.proccalloption:=proc_direcdata[p].pocall;
include(pd.procoptions,po_hascallingconvention);
end;
@ -2132,7 +2151,15 @@ const
end.
{
$Log$
Revision 1.151 2003-11-03 17:47:30 peter
Revision 1.152 2003-11-07 15:58:32 florian
* Florian's culmutative nr. 1; contains:
- invalid calling conventions for a certain cpu are rejected
- arm softfloat calling conventions
- -Sp for cpu dependend code generation
- several arm fixes
- remaining code for value open array paras on heap
Revision 1.151 2003/11/03 17:47:30 peter
* insert framepointer as voidpointer instead of returntype
Revision 1.150 2003/10/30 16:23:13 peter

View File

@ -301,7 +301,7 @@ implementation
if (m_tp_procvar in aktmodeswitches) and
(token<>_ASSIGNMENT) and
(not got_addrn) and
(block_type=bt_general) then
(block_type=bt_body) then
begin
{ ignore vecn,subscriptn }
hp:=p;
@ -2478,7 +2478,15 @@ implementation
end.
{
$Log$
Revision 1.138 2003-11-06 15:54:32 peter
Revision 1.139 2003-11-07 15:58:32 florian
* Florian's culmutative nr. 1; contains:
- invalid calling conventions for a certain cpu are rejected
- arm softfloat calling conventions
- -Sp for cpu dependend code generation
- several arm fixes
- remaining code for value open array paras on heap
Revision 1.138 2003/11/06 15:54:32 peter
* fixed calling classmethod for other object from classmethod
Revision 1.137 2003/11/04 16:42:13 peter

View File

@ -69,12 +69,32 @@ Const
{ for linux: }
jmp_buf_size = 232;
{ calling conventions supported by the code generator }
supported_calling_conventions = [
pocall_internproc,
pocall_compilerproc,
pocall_inline,
pocall_stdcall,
{ the difference to stdcall is only the name mangling }
pocall_cdecl,
{ the difference to stdcall is only the name mangling }
pocall_cppdecl
];
Implementation
end.
{
$Log$
Revision 1.14 2003-09-03 11:18:37 florian
Revision 1.15 2003-11-07 15:58:33 florian
* Florian's culmutative nr. 1; contains:
- invalid calling conventions for a certain cpu are rejected
- arm softfloat calling conventions
- -Sp for cpu dependend code generation
- several arm fixes
- remaining code for value open array paras on heap
Revision 1.14 2003/09/03 11:18:37 florian
* fixed arm concatcopy
+ arm support in the common compiler sources added
* moved some generic cg code around

View File

@ -903,8 +903,12 @@ implementation
procedure tcgprocinfo.parse_body;
var
oldprocinfo : tprocinfo;
oldblock_type : tblock_type;
begin
oldprocinfo:=current_procinfo;
oldblock_type:=block_type;
{ reset break and continue labels }
block_type:=bt_body;
current_procinfo:=self;
@ -918,8 +922,6 @@ implementation
else if (procdef.parast.symtablelevel=normal_function_level) then
allow_only_static:=false;
{ reset break and continue labels }
block_type:=bt_general;
{$ifdef state_tracking}
{ aktstate:=Tstate_storage.create;}
{$endif state_tracking}
@ -1002,6 +1004,8 @@ implementation
if (current_procinfo.procdef.parast.symtablelevel=normal_function_level) then
allow_only_static:=false;
current_procinfo:=oldprocinfo;
block_type:=oldblock_type;
end;
@ -1308,7 +1312,15 @@ implementation
end.
{
$Log$
Revision 1.169 2003-10-31 15:52:18 peter
Revision 1.170 2003-11-07 15:58:32 florian
* Florian's culmutative nr. 1; contains:
- invalid calling conventions for a certain cpu are rejected
- arm softfloat calling conventions
- -Sp for cpu dependend code generation
- several arm fixes
- remaining code for value open array paras on heap
Revision 1.169 2003/10/31 15:52:18 peter
* fix crash with fail in constructor
Revision 1.168 2003/10/30 16:22:40 peter

View File

@ -1781,7 +1781,7 @@ implementation
begin
so:=Taicpu_abstract(p).oper[i]^.shifterop;
if so^.rs<>NR_NO then
setsupreg(so^.rs,table[getsupreg(so^.rs)]);
setsupreg(so^.rs,reginfo[getsupreg(so^.rs)].colour);
end;
{$endif arm}
end;
@ -1820,7 +1820,15 @@ implementation
end.
{
$Log$
Revision 1.93 2003-10-30 16:22:40 peter
Revision 1.94 2003-11-07 15:58:32 florian
* Florian's culmutative nr. 1; contains:
- invalid calling conventions for a certain cpu are rejected
- arm softfloat calling conventions
- -Sp for cpu dependend code generation
- several arm fixes
- remaining code for value open array paras on heap
Revision 1.93 2003/10/30 16:22:40 peter
* call firstpass before allocation and codegeneration is started
* move leftover code from pass_2.generatecode() to psub

View File

@ -288,6 +288,10 @@ implementation
do_message(scan_f_user_defined);
end;
procedure dir_fputype;
begin
end;
procedure dir_goto;
begin
do_moduleswitch(cs_support_goto);
@ -983,7 +987,15 @@ implementation
end.
{
$Log$
Revision 1.26 2003-09-17 22:30:19 olle
Revision 1.27 2003-11-07 15:58:32 florian
* Florian's culmutative nr. 1; contains:
- invalid calling conventions for a certain cpu are rejected
- arm softfloat calling conventions
- -Sp for cpu dependend code generation
- several arm fixes
- remaining code for value open array paras on heap
Revision 1.26 2003/09/17 22:30:19 olle
+ support for a different set of compiler directives under $MODE MAC
+ added mac directives $SETC $IFC $ELSEC $ENDC

View File

@ -61,12 +61,30 @@ const
{$warning jmp_buf_size not set!}
JMP_BUF_SIZE = 4; // 4 is used temporary to remove AllocTemp warning
{ calling conventions supported by the code generator }
supported_calling_conventions = [
pocall_internproc,
pocall_compilerproc,
pocall_inline,
pocall_stdcall,
pocall_cdecl,
pocall_cppdecl
];
implementation
end.
{
$Log$
Revision 1.9 2003-09-03 15:55:01 peter
Revision 1.10 2003-11-07 15:58:33 florian
* Florian's culmutative nr. 1; contains:
- invalid calling conventions for a certain cpu are rejected
- arm softfloat calling conventions
- -Sp for cpu dependend code generation
- several arm fixes
- remaining code for value open array paras on heap
Revision 1.9 2003/09/03 15:55:01 peter
* NEWRA branch merged
Revision 1.8 2003/06/17 16:35:42 peter

View File

@ -343,7 +343,7 @@ const
savestdregs_pocalls = [
pocall_cdecl,pocall_cppdecl,pocall_palmossyscall,
pocall_stdcall,pocall_safecall,pocall_compilerproc,
pocall_register
pocall_register,pocall_softfloat
];
clearstack_pocalls = [
@ -377,7 +377,15 @@ implementation
end.
{
$Log$
Revision 1.69 2003-10-28 15:36:01 peter
Revision 1.70 2003-11-07 15:58:32 florian
* Florian's culmutative nr. 1; contains:
- invalid calling conventions for a certain cpu are rejected
- arm softfloat calling conventions
- -Sp for cpu dependend code generation
- several arm fixes
- remaining code for value open array paras on heap
Revision 1.69 2003/10/28 15:36:01 peter
* absolute to object field supported, fixes tb0458
Revision 1.68 2003/10/08 19:19:45 peter

View File

@ -201,6 +201,7 @@ type
_PROCEDURE,
_PROTECTED,
_PUBLISHED,
_SOFTFLOAT,
_THREADVAR,
_DEPRECATED,
_DESTRUCTOR,
@ -423,6 +424,7 @@ const
(str:'PROCEDURE' ;special:false;keyword:m_all;op:NOTOKEN),
(str:'PROTECTED' ;special:false;keyword:m_none;op:NOTOKEN),
(str:'PUBLISHED' ;special:false;keyword:m_none;op:NOTOKEN),
(str:'SOFTFLOAT' ;special:false;keyword:m_none;op:NOTOKEN),
(str:'THREADVAR' ;special:false;keyword:m_class;op:NOTOKEN),
(str:'DEPRECATED' ;special:false;keyword:m_all;op:NOTOKEN),
(str:'DESTRUCTOR' ;special:false;keyword:m_all;op:NOTOKEN),
@ -502,7 +504,15 @@ end;
end.
{
$Log$
Revision 1.24 2003-09-07 22:09:35 peter
Revision 1.25 2003-11-07 15:58:32 florian
* Florian's culmutative nr. 1; contains:
- invalid calling conventions for a certain cpu are rejected
- arm softfloat calling conventions
- -Sp for cpu dependend code generation
- several arm fixes
- remaining code for value open array paras on heap
Revision 1.24 2003/09/07 22:09:35 peter
* preparations for different default calling conventions
* various RA fixes