mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-06 11:18:36 +02:00
+ some stuff for the new code generator
This commit is contained in:
parent
b2ac51a11b
commit
b9968f4a43
@ -57,7 +57,7 @@ unit cgbase;
|
||||
{ frame pointer offset }
|
||||
framepointer_offset : longint;
|
||||
{ self pointer offset }
|
||||
ESI_offset : longint;
|
||||
selfpointer_offset : longint;
|
||||
{ result value offset }
|
||||
retoffset : longint;
|
||||
|
||||
@ -395,7 +395,10 @@ unit cgbase;
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.2 1998-12-26 15:20:28 florian
|
||||
Revision 1.3 1999-01-06 22:58:48 florian
|
||||
+ some stuff for the new code generator
|
||||
|
||||
Revision 1.2 1998/12/26 15:20:28 florian
|
||||
+ more changes for the new version
|
||||
|
||||
Revision 1.1 1998/12/15 22:18:55 florian
|
||||
|
@ -31,6 +31,8 @@ unit i386;
|
||||
extended_size = 10;
|
||||
|
||||
type
|
||||
tcpuflags = (cf_registers64);
|
||||
|
||||
tasmop = (
|
||||
A_MOV,A_MOVZX,A_MOVSX,A_LABEL,A_ADD,
|
||||
A_CALL,A_IDIV,A_IMUL,A_JMP,A_LEA,A_MUL,A_NEG,A_NOT,
|
||||
@ -119,7 +121,7 @@ unit i386;
|
||||
{ S_IS = integer on 16 bits }
|
||||
{ S_D = integer on bits for MMX }
|
||||
topsize = (S_NO,S_B,S_W,S_L,S_BW,S_BL,S_WL,
|
||||
S_IS,S_IL,S_IQ,S_FS,S_FL,S_FX,S_D);
|
||||
S_IS,S_IL,S_IQ,S_FS,S_FL,S_FX,S_D,S_Q);
|
||||
{ S_FS and S_FL added
|
||||
S_X renamed to S_FX
|
||||
S_IL added
|
||||
@ -207,6 +209,11 @@ unit i386;
|
||||
{ this is for calls }
|
||||
top_symbol = 4;
|
||||
|
||||
const
|
||||
{ description of the cpu }
|
||||
|
||||
cpuflags : set of tcpuflags = [];
|
||||
|
||||
stack_pointer = R_ESP;
|
||||
|
||||
frame_pointer = R_EBP;
|
||||
@ -222,6 +229,10 @@ unit i386;
|
||||
|
||||
registers_saved_on_cdecl = [R_ESI,R_EDI,R_EBX];
|
||||
|
||||
{ size of pointers }
|
||||
pointersize = 4;
|
||||
sizepostfix_pointer = S_L;
|
||||
|
||||
type
|
||||
pai_labeled = ^tai_labeled;
|
||||
|
||||
@ -298,8 +309,6 @@ unit i386;
|
||||
destructor done;virtual;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
const
|
||||
maxvarregs = 4;
|
||||
varregs : array[1..maxvarregs] of tregister =
|
||||
@ -318,6 +327,14 @@ unit i386;
|
||||
function reg32toreg16(reg : tregister) : tregister;
|
||||
function reg16toreg32(reg : tregister) : tregister;
|
||||
|
||||
{ these procedures must be defined by all target cpus }
|
||||
function regtoreg8(reg : tregister) : tregister;
|
||||
function regtoreg16(reg : tregister) : tregister;
|
||||
function regtoreg32(reg : tregister) : tregister;
|
||||
|
||||
{ can be ignored on 32 bit systems }
|
||||
function regtoreg64(reg : tregister) : tregister;
|
||||
|
||||
{ resets all values of ref to defaults }
|
||||
procedure reset_reference(var ref : treference);
|
||||
{ set mostly used values of a new reference }
|
||||
@ -988,7 +1005,7 @@ unit i386;
|
||||
S_IS,S_IL,S_IQ,S_FS,S_FL,S_FX,S_D); }
|
||||
att_opsize2str : array[topsize] of string[2] =
|
||||
('','b','w','l','bw','bl','wl',
|
||||
's','l','q','s','l','t','d');
|
||||
's','l','q','s','l','t','d','q');
|
||||
|
||||
att_reg2str : array[tregister] of string[6] =
|
||||
('','%eax','%ecx','%edx','%ebx','%esp','%ebp','%esi','%edi',
|
||||
@ -1145,6 +1162,30 @@ unit i386;
|
||||
reg8toreg32:=tregister(byte(reg)-byte(R_DI));
|
||||
end;
|
||||
|
||||
function regtoreg8(reg : tregister) : tregister;
|
||||
|
||||
begin
|
||||
regtoreg8:=reg32toreg8(reg);
|
||||
end;
|
||||
|
||||
function regtoreg16(reg : tregister) : tregister;
|
||||
|
||||
begin
|
||||
regtoreg16:=reg32toreg16(reg);
|
||||
end;
|
||||
|
||||
function regtoreg32(reg : tregister) : tregister;
|
||||
|
||||
begin
|
||||
regtoreg32:=reg;
|
||||
end;
|
||||
|
||||
function regtoreg64(reg : tregister) : tregister;
|
||||
|
||||
begin
|
||||
internalerror(6464);
|
||||
end;
|
||||
|
||||
procedure reset_reference(var ref : treference);
|
||||
|
||||
begin
|
||||
@ -1754,7 +1795,10 @@ unit i386;
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.2 1998-12-15 22:18:56 florian
|
||||
Revision 1.3 1999-01-06 22:58:49 florian
|
||||
+ some stuff for the new code generator
|
||||
|
||||
Revision 1.2 1998/12/15 22:18:56 florian
|
||||
* some code added
|
||||
|
||||
Revision 1.1 1998/12/15 16:32:58 florian
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -55,6 +55,9 @@ unit systems;
|
||||
,target_m68k_Amiga,target_m68k_Atari,target_m68k_Mac,
|
||||
target_m68k_linux,target_m68k_PalmOS
|
||||
);
|
||||
|
||||
ttargetflags = (tf_needs_isconsole,tf_supports_stack_checking);
|
||||
|
||||
const
|
||||
{$ifdef i386} i386targetcnt=5; {$else} i386targetcnt=0; {$endif}
|
||||
{$ifdef m68k} m68ktargetcnt=5; {$else} m68ktargetcnt=0; {$endif}
|
||||
@ -178,6 +181,7 @@ unit systems;
|
||||
|
||||
ttargetinfo = packed record
|
||||
target : ttarget;
|
||||
flags : set of ttargetflags;
|
||||
cpu : ttargetcpu;
|
||||
short_name : string[8];
|
||||
unit_env : string[12];
|
||||
@ -732,12 +736,14 @@ implementation
|
||||
target_infos : array[1..targetcnt] of ttargetinfo = (
|
||||
(
|
||||
target : target_none;
|
||||
flags : [];
|
||||
cpu : no_cpu;
|
||||
short_name : 'notarget'
|
||||
)
|
||||
{$ifdef i386}
|
||||
,(
|
||||
target : target_i386_GO32V1;
|
||||
flags : [];
|
||||
cpu : i386;
|
||||
short_name : 'GO32V1';
|
||||
unit_env : 'GO32V1UNITS';
|
||||
@ -761,6 +767,7 @@ implementation
|
||||
),
|
||||
(
|
||||
target : target_i386_GO32V2;
|
||||
flags : [];
|
||||
cpu : i386;
|
||||
short_name : 'GO32V2';
|
||||
unit_env : 'GO32V2UNITS';
|
||||
@ -784,6 +791,7 @@ implementation
|
||||
),
|
||||
(
|
||||
target : target_i386_LINUX;
|
||||
flags : [];
|
||||
cpu : i386;
|
||||
short_name : 'LINUX';
|
||||
unit_env : 'LINUXUNITS';
|
||||
@ -807,6 +815,7 @@ implementation
|
||||
),
|
||||
(
|
||||
target : target_i386_OS2;
|
||||
flags : [];
|
||||
cpu : i386;
|
||||
short_name : 'OS2';
|
||||
unit_env : 'OS2UNITS';
|
||||
@ -830,6 +839,7 @@ implementation
|
||||
),
|
||||
(
|
||||
target : target_i386_WIN32;
|
||||
flags : [];
|
||||
cpu : i386;
|
||||
short_name : 'WIN32';
|
||||
unit_env : 'WIN32UNITS';
|
||||
@ -855,6 +865,7 @@ implementation
|
||||
{$ifdef m68k}
|
||||
,(
|
||||
target : target_m68k_Amiga;
|
||||
flags : [];
|
||||
cpu : m68k;
|
||||
short_name : 'AMIGA';
|
||||
unit_env : '';
|
||||
@ -878,6 +889,7 @@ implementation
|
||||
),
|
||||
(
|
||||
target : target_m68k_Atari;
|
||||
flags : [];
|
||||
cpu : m68k;
|
||||
short_name : 'ATARI';
|
||||
unit_env : '';
|
||||
@ -901,6 +913,7 @@ implementation
|
||||
),
|
||||
(
|
||||
target : target_m68k_Mac;
|
||||
flags : [];
|
||||
cpu : m68k;
|
||||
short_name : 'MACOS';
|
||||
unit_env : '';
|
||||
@ -924,6 +937,7 @@ implementation
|
||||
),
|
||||
(
|
||||
target : target_m68k_linux;
|
||||
flags : [];
|
||||
cpu : m68k;
|
||||
short_name : 'LINUX';
|
||||
unit_env : 'LINUXUNITS';
|
||||
@ -947,6 +961,7 @@ implementation
|
||||
),
|
||||
(
|
||||
target : target_m68k_PalmOS;
|
||||
flags : [];
|
||||
cpu : m68k;
|
||||
short_name : 'PALMOS';
|
||||
unit_env : 'PALMUNITS';
|
||||
@ -1299,7 +1314,10 @@ begin
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.54 1998-12-28 23:26:26 peter
|
||||
Revision 1.55 1999-01-06 22:58:47 florian
|
||||
+ some stuff for the new code generator
|
||||
|
||||
Revision 1.54 1998/12/28 23:26:26 peter
|
||||
+ resource file handling ($R directive) for Win32
|
||||
|
||||
Revision 1.53 1998/12/15 10:23:30 peter
|
||||
|
Loading…
Reference in New Issue
Block a user