mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-25 00:29:25 +02:00
+ gas registers
This commit is contained in:
parent
1f18d7ac1b
commit
b19572b41d
@ -6,7 +6,7 @@
|
||||
; layout
|
||||
; <name>,<type>,<value>,<stdname>,<stabidx>
|
||||
;
|
||||
NO,$00,$00,INVALID,-1
|
||||
NO,$00,$00,INVALID,INVALID,-1
|
||||
|
||||
D0,$01,$00,d0,%d0,0
|
||||
D1,$01,$01,d1,%d1,1
|
||||
@ -34,7 +34,7 @@ FP5,$02,$05,fp5,%fp5,21
|
||||
FP6,$02,$06,fp6,%fp6,22
|
||||
FP7,$02,$07,fp7,%fp7,23
|
||||
|
||||
PC,$05,$00,pc,24
|
||||
PC,$05,$00,pc,%pc,24
|
||||
CCR,$05,$01,ccr,%ccr,0
|
||||
FPCR,$05,$02,fpcr,%fpcr,0
|
||||
SR,$05,$03,sr,%sr,0
|
||||
@ -46,10 +46,12 @@ FPSR,$05,$08,fpsr,%fpsr,0
|
||||
|
||||
;
|
||||
; $Log$
|
||||
; Revision 1.2 2004-04-25 21:26:16 florian
|
||||
; Revision 1.3 2004-04-26 11:05:28 florian
|
||||
; + gas registers
|
||||
;
|
||||
; Revision 1.2 2004/04/25 21:26:16 florian
|
||||
; * some m68k stuff fixed
|
||||
;
|
||||
; Revision 1.1 2003/12/10 02:30:58 karoly
|
||||
; * initial revision
|
||||
;
|
||||
;
|
||||
|
@ -25,3 +25,11 @@ NR_FP5 = tregister($02000005);
|
||||
NR_FP6 = tregister($02000006);
|
||||
NR_FP7 = tregister($02000007);
|
||||
NR_PC = tregister($05000000);
|
||||
NR_CCR = tregister($05000001);
|
||||
NR_FPCR = tregister($05000002);
|
||||
NR_SR = tregister($05000003);
|
||||
NR_SSP = tregister($05000004);
|
||||
NR_DFC = tregister($05000005);
|
||||
NR_SFC = tregister($05000006);
|
||||
NR_VBR = tregister($05000007);
|
||||
NR_FPSR = tregister($05000008);
|
||||
|
35
compiler/m68k/r68kgas.inc
Normal file
35
compiler/m68k/r68kgas.inc
Normal file
@ -0,0 +1,35 @@
|
||||
{ don't edit, this file is generated from m68kreg.dat }
|
||||
'INVALID',
|
||||
'%d0',
|
||||
'%d1',
|
||||
'%d2',
|
||||
'%d3',
|
||||
'%d4',
|
||||
'%d5',
|
||||
'%d6',
|
||||
'%d7',
|
||||
'%a0',
|
||||
'%a1',
|
||||
'%a2',
|
||||
'%a3',
|
||||
'%a4',
|
||||
'%a5',
|
||||
'%a6',
|
||||
'%sp',
|
||||
'%fp0',
|
||||
'%fp1',
|
||||
'%fp2',
|
||||
'%fp3',
|
||||
'%fp4',
|
||||
'%fp5',
|
||||
'%fp6',
|
||||
'%fp7',
|
||||
'%pc',
|
||||
'%ccr',
|
||||
'%fpcr',
|
||||
'%sr',
|
||||
'%ssp',
|
||||
'%dfc',
|
||||
'%sfc',
|
||||
'%vbr',
|
||||
'%fpsr'
|
35
compiler/m68k/r68kgri.inc
Normal file
35
compiler/m68k/r68kgri.inc
Normal file
@ -0,0 +1,35 @@
|
||||
{ don't edit, this file is generated from m68kreg.dat }
|
||||
9,
|
||||
10,
|
||||
11,
|
||||
12,
|
||||
13,
|
||||
14,
|
||||
15,
|
||||
26,
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
6,
|
||||
7,
|
||||
8,
|
||||
30,
|
||||
17,
|
||||
18,
|
||||
19,
|
||||
20,
|
||||
21,
|
||||
22,
|
||||
23,
|
||||
24,
|
||||
27,
|
||||
33,
|
||||
25,
|
||||
31,
|
||||
16,
|
||||
28,
|
||||
29,
|
||||
32,
|
||||
0
|
@ -1,2 +1,2 @@
|
||||
{ don't edit, this file is generated from m68kreg.dat }
|
||||
26
|
||||
34
|
||||
|
@ -24,4 +24,12 @@ tregister($02000004),
|
||||
tregister($02000005),
|
||||
tregister($02000006),
|
||||
tregister($02000007),
|
||||
tregister($05000000)
|
||||
tregister($05000000),
|
||||
tregister($05000001),
|
||||
tregister($05000002),
|
||||
tregister($05000003),
|
||||
tregister($05000004),
|
||||
tregister($05000005),
|
||||
tregister($05000006),
|
||||
tregister($05000007),
|
||||
tregister($05000008)
|
||||
|
@ -24,4 +24,12 @@
|
||||
22,
|
||||
23,
|
||||
24,
|
||||
25
|
||||
25,
|
||||
26,
|
||||
27,
|
||||
28,
|
||||
29,
|
||||
30,
|
||||
31,
|
||||
32,
|
||||
33
|
||||
|
@ -7,14 +7,16 @@
|
||||
13,
|
||||
14,
|
||||
15,
|
||||
26,
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
6,
|
||||
8,
|
||||
7,
|
||||
8,
|
||||
30,
|
||||
17,
|
||||
18,
|
||||
19,
|
||||
@ -23,5 +25,11 @@
|
||||
22,
|
||||
23,
|
||||
24,
|
||||
27,
|
||||
33,
|
||||
25,
|
||||
16
|
||||
31,
|
||||
16,
|
||||
28,
|
||||
29,
|
||||
32
|
||||
|
@ -24,4 +24,12 @@
|
||||
21,
|
||||
22,
|
||||
23,
|
||||
24
|
||||
24,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
|
@ -7,7 +7,7 @@
|
||||
'd4',
|
||||
'd5',
|
||||
'd6',
|
||||
'd6',
|
||||
'd7',
|
||||
'a0',
|
||||
'a1',
|
||||
'a2',
|
||||
@ -24,4 +24,12 @@
|
||||
'fp5',
|
||||
'fp6',
|
||||
'fp7',
|
||||
'pc'
|
||||
'pc',
|
||||
'ccr',
|
||||
'fpcr',
|
||||
'sr',
|
||||
'ssp',
|
||||
'dfc',
|
||||
'sfc',
|
||||
'vbr',
|
||||
'fpsr'
|
||||
|
@ -25,3 +25,11 @@ RS_FP5 = $05;
|
||||
RS_FP6 = $06;
|
||||
RS_FP7 = $07;
|
||||
RS_PC = $00;
|
||||
RS_CCR = $01;
|
||||
RS_FPCR = $02;
|
||||
RS_SR = $03;
|
||||
RS_SSP = $04;
|
||||
RS_DFC = $05;
|
||||
RS_SFC = $06;
|
||||
RS_VBR = $07;
|
||||
RS_FPSR = $08;
|
||||
|
@ -28,9 +28,10 @@ var s : string;
|
||||
supregs,
|
||||
numbers,
|
||||
stdnames,
|
||||
gasnames,
|
||||
stabs : array[0..max_regcount-1] of string[63];
|
||||
regnumber_index,
|
||||
std_regname_index : array[0..max_regcount-1] of byte;
|
||||
std_regname_index,gas_regname_index : array[0..max_regcount-1] of byte;
|
||||
|
||||
{$ifndef FPC}
|
||||
procedure readln(var t:text;var s:string);
|
||||
@ -173,6 +174,36 @@ begin
|
||||
until p=0;
|
||||
end;
|
||||
|
||||
procedure build_gas_regname_index;
|
||||
|
||||
var h,i,j,p,t:byte;
|
||||
|
||||
begin
|
||||
{Build the registernumber2regindex index.
|
||||
Step 1: Fill.}
|
||||
for i:=0 to regcount-1 do
|
||||
gas_regname_index[i]:=i;
|
||||
{Step 2: Sort. We use a Shell-Metzner sort.}
|
||||
p:=regcount_bsstart;
|
||||
repeat
|
||||
for h:=0 to regcount-p-1 do
|
||||
begin
|
||||
i:=h;
|
||||
repeat
|
||||
j:=i+p;
|
||||
if gasnames[gas_regname_index[j]]>=gasnames[gas_regname_index[i]] then
|
||||
break;
|
||||
t:=gas_regname_index[i];
|
||||
gas_regname_index[i]:=gas_regname_index[j];
|
||||
gas_regname_index[j]:=t;
|
||||
if i<p then
|
||||
break;
|
||||
dec(i,p);
|
||||
until false;
|
||||
end;
|
||||
p:=p shr 1;
|
||||
until p=0;
|
||||
end;
|
||||
|
||||
procedure read_spreg_file;
|
||||
|
||||
@ -201,6 +232,8 @@ begin
|
||||
readcomma;
|
||||
stdnames[regcount]:=readstr;
|
||||
readcomma;
|
||||
gasnames[regcount]:=readstr;
|
||||
readcomma;
|
||||
stabs[regcount]:=readstr;
|
||||
{ Create register number }
|
||||
if supregs[regcount][1]<>'$' then
|
||||
@ -229,9 +262,9 @@ end;
|
||||
procedure write_inc_files;
|
||||
|
||||
var
|
||||
norfile,stdfile,supfile,
|
||||
norfile,stdfile,gasfile,supfile,
|
||||
numfile,stabfile,confile,
|
||||
rnifile,srifile:text;
|
||||
rnifile,srifile,grifile:text;
|
||||
first:boolean;
|
||||
|
||||
begin
|
||||
@ -240,10 +273,12 @@ begin
|
||||
openinc(supfile,'r68ksup.inc');
|
||||
openinc(numfile,'r68knum.inc');
|
||||
openinc(stdfile,'r68kstd.inc');
|
||||
openinc(gasfile,'r68kgas.inc');
|
||||
openinc(stabfile,'r68ksta.inc');
|
||||
openinc(norfile,'r68knor.inc');
|
||||
openinc(rnifile,'r68krni.inc');
|
||||
openinc(srifile,'r68ksri.inc');
|
||||
openinc(grifile,'r68kgri.inc');
|
||||
first:=true;
|
||||
for i:=0 to regcount-1 do
|
||||
begin
|
||||
@ -251,9 +286,11 @@ begin
|
||||
begin
|
||||
writeln(numfile,',');
|
||||
writeln(stdfile,',');
|
||||
writeln(gasfile,',');
|
||||
writeln(stabfile,',');
|
||||
writeln(rnifile,',');
|
||||
writeln(srifile,',');
|
||||
writeln(grifile,',');
|
||||
end
|
||||
else
|
||||
first:=false;
|
||||
@ -261,19 +298,23 @@ begin
|
||||
writeln(confile,'NR_'+names[i],' = ','tregister(',numbers[i],')',';');
|
||||
write(numfile,'tregister(',numbers[i],')');
|
||||
write(stdfile,'''',stdnames[i],'''');
|
||||
write(gasfile,'''',gasnames[i],'''');
|
||||
write(stabfile,stabs[i]);
|
||||
write(rnifile,regnumber_index[i]);
|
||||
write(srifile,std_regname_index[i]);
|
||||
write(grifile,gas_regname_index[i]);
|
||||
end;
|
||||
write(norfile,regcount);
|
||||
close(confile);
|
||||
close(supfile);
|
||||
closeinc(numfile);
|
||||
closeinc(stdfile);
|
||||
closeinc(gasfile);
|
||||
closeinc(stabfile);
|
||||
closeinc(norfile);
|
||||
closeinc(rnifile);
|
||||
closeinc(srifile);
|
||||
closeinc(grifile);
|
||||
writeln('Done!');
|
||||
writeln(regcount,' registers procesed');
|
||||
end;
|
||||
@ -289,13 +330,17 @@ begin
|
||||
regcount_bsstart:=regcount_bsstart*2;
|
||||
build_regnum_index;
|
||||
build_std_regname_index;
|
||||
build_gas_regname_index;
|
||||
write_inc_files;
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.3 2004-01-30 13:42:03 florian
|
||||
Revision 1.4 2004-04-26 11:05:14 florian
|
||||
+ gas registers
|
||||
|
||||
Revision 1.3 2004/01/30 13:42:03 florian
|
||||
* fixed more alignment issues
|
||||
|
||||
Revision 1.2 2003/12/10 02:22:59 karoly
|
||||
* fixed logs
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user