mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-11-04 18:09:37 +01:00
+ gas registers
This commit is contained in:
parent
1f18d7ac1b
commit
b19572b41d
@ -6,7 +6,7 @@
|
|||||||
; layout
|
; layout
|
||||||
; <name>,<type>,<value>,<stdname>,<stabidx>
|
; <name>,<type>,<value>,<stdname>,<stabidx>
|
||||||
;
|
;
|
||||||
NO,$00,$00,INVALID,-1
|
NO,$00,$00,INVALID,INVALID,-1
|
||||||
|
|
||||||
D0,$01,$00,d0,%d0,0
|
D0,$01,$00,d0,%d0,0
|
||||||
D1,$01,$01,d1,%d1,1
|
D1,$01,$01,d1,%d1,1
|
||||||
@ -34,7 +34,7 @@ FP5,$02,$05,fp5,%fp5,21
|
|||||||
FP6,$02,$06,fp6,%fp6,22
|
FP6,$02,$06,fp6,%fp6,22
|
||||||
FP7,$02,$07,fp7,%fp7,23
|
FP7,$02,$07,fp7,%fp7,23
|
||||||
|
|
||||||
PC,$05,$00,pc,24
|
PC,$05,$00,pc,%pc,24
|
||||||
CCR,$05,$01,ccr,%ccr,0
|
CCR,$05,$01,ccr,%ccr,0
|
||||||
FPCR,$05,$02,fpcr,%fpcr,0
|
FPCR,$05,$02,fpcr,%fpcr,0
|
||||||
SR,$05,$03,sr,%sr,0
|
SR,$05,$03,sr,%sr,0
|
||||||
@ -46,10 +46,12 @@ FPSR,$05,$08,fpsr,%fpsr,0
|
|||||||
|
|
||||||
;
|
;
|
||||||
; $Log$
|
; $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
|
; * some m68k stuff fixed
|
||||||
;
|
;
|
||||||
; Revision 1.1 2003/12/10 02:30:58 karoly
|
; Revision 1.1 2003/12/10 02:30:58 karoly
|
||||||
; * initial revision
|
; * initial revision
|
||||||
;
|
;
|
||||||
;
|
|
||||||
|
|||||||
@ -25,3 +25,11 @@ NR_FP5 = tregister($02000005);
|
|||||||
NR_FP6 = tregister($02000006);
|
NR_FP6 = tregister($02000006);
|
||||||
NR_FP7 = tregister($02000007);
|
NR_FP7 = tregister($02000007);
|
||||||
NR_PC = tregister($05000000);
|
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 }
|
{ don't edit, this file is generated from m68kreg.dat }
|
||||||
26
|
34
|
||||||
|
|||||||
@ -24,4 +24,12 @@ tregister($02000004),
|
|||||||
tregister($02000005),
|
tregister($02000005),
|
||||||
tregister($02000006),
|
tregister($02000006),
|
||||||
tregister($02000007),
|
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,
|
22,
|
||||||
23,
|
23,
|
||||||
24,
|
24,
|
||||||
25
|
25,
|
||||||
|
26,
|
||||||
|
27,
|
||||||
|
28,
|
||||||
|
29,
|
||||||
|
30,
|
||||||
|
31,
|
||||||
|
32,
|
||||||
|
33
|
||||||
|
|||||||
@ -7,14 +7,16 @@
|
|||||||
13,
|
13,
|
||||||
14,
|
14,
|
||||||
15,
|
15,
|
||||||
|
26,
|
||||||
1,
|
1,
|
||||||
2,
|
2,
|
||||||
3,
|
3,
|
||||||
4,
|
4,
|
||||||
5,
|
5,
|
||||||
6,
|
6,
|
||||||
8,
|
|
||||||
7,
|
7,
|
||||||
|
8,
|
||||||
|
30,
|
||||||
17,
|
17,
|
||||||
18,
|
18,
|
||||||
19,
|
19,
|
||||||
@ -23,5 +25,11 @@
|
|||||||
22,
|
22,
|
||||||
23,
|
23,
|
||||||
24,
|
24,
|
||||||
|
27,
|
||||||
|
33,
|
||||||
25,
|
25,
|
||||||
16
|
31,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
29,
|
||||||
|
32
|
||||||
|
|||||||
@ -24,4 +24,12 @@
|
|||||||
21,
|
21,
|
||||||
22,
|
22,
|
||||||
23,
|
23,
|
||||||
24
|
24,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
|||||||
@ -7,7 +7,7 @@
|
|||||||
'd4',
|
'd4',
|
||||||
'd5',
|
'd5',
|
||||||
'd6',
|
'd6',
|
||||||
'd6',
|
'd7',
|
||||||
'a0',
|
'a0',
|
||||||
'a1',
|
'a1',
|
||||||
'a2',
|
'a2',
|
||||||
@ -24,4 +24,12 @@
|
|||||||
'fp5',
|
'fp5',
|
||||||
'fp6',
|
'fp6',
|
||||||
'fp7',
|
'fp7',
|
||||||
'pc'
|
'pc',
|
||||||
|
'ccr',
|
||||||
|
'fpcr',
|
||||||
|
'sr',
|
||||||
|
'ssp',
|
||||||
|
'dfc',
|
||||||
|
'sfc',
|
||||||
|
'vbr',
|
||||||
|
'fpsr'
|
||||||
|
|||||||
@ -25,3 +25,11 @@ RS_FP5 = $05;
|
|||||||
RS_FP6 = $06;
|
RS_FP6 = $06;
|
||||||
RS_FP7 = $07;
|
RS_FP7 = $07;
|
||||||
RS_PC = $00;
|
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,
|
supregs,
|
||||||
numbers,
|
numbers,
|
||||||
stdnames,
|
stdnames,
|
||||||
|
gasnames,
|
||||||
stabs : array[0..max_regcount-1] of string[63];
|
stabs : array[0..max_regcount-1] of string[63];
|
||||||
regnumber_index,
|
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}
|
{$ifndef FPC}
|
||||||
procedure readln(var t:text;var s:string);
|
procedure readln(var t:text;var s:string);
|
||||||
@ -173,6 +174,36 @@ begin
|
|||||||
until p=0;
|
until p=0;
|
||||||
end;
|
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;
|
procedure read_spreg_file;
|
||||||
|
|
||||||
@ -201,6 +232,8 @@ begin
|
|||||||
readcomma;
|
readcomma;
|
||||||
stdnames[regcount]:=readstr;
|
stdnames[regcount]:=readstr;
|
||||||
readcomma;
|
readcomma;
|
||||||
|
gasnames[regcount]:=readstr;
|
||||||
|
readcomma;
|
||||||
stabs[regcount]:=readstr;
|
stabs[regcount]:=readstr;
|
||||||
{ Create register number }
|
{ Create register number }
|
||||||
if supregs[regcount][1]<>'$' then
|
if supregs[regcount][1]<>'$' then
|
||||||
@ -229,9 +262,9 @@ end;
|
|||||||
procedure write_inc_files;
|
procedure write_inc_files;
|
||||||
|
|
||||||
var
|
var
|
||||||
norfile,stdfile,supfile,
|
norfile,stdfile,gasfile,supfile,
|
||||||
numfile,stabfile,confile,
|
numfile,stabfile,confile,
|
||||||
rnifile,srifile:text;
|
rnifile,srifile,grifile:text;
|
||||||
first:boolean;
|
first:boolean;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
@ -240,10 +273,12 @@ begin
|
|||||||
openinc(supfile,'r68ksup.inc');
|
openinc(supfile,'r68ksup.inc');
|
||||||
openinc(numfile,'r68knum.inc');
|
openinc(numfile,'r68knum.inc');
|
||||||
openinc(stdfile,'r68kstd.inc');
|
openinc(stdfile,'r68kstd.inc');
|
||||||
|
openinc(gasfile,'r68kgas.inc');
|
||||||
openinc(stabfile,'r68ksta.inc');
|
openinc(stabfile,'r68ksta.inc');
|
||||||
openinc(norfile,'r68knor.inc');
|
openinc(norfile,'r68knor.inc');
|
||||||
openinc(rnifile,'r68krni.inc');
|
openinc(rnifile,'r68krni.inc');
|
||||||
openinc(srifile,'r68ksri.inc');
|
openinc(srifile,'r68ksri.inc');
|
||||||
|
openinc(grifile,'r68kgri.inc');
|
||||||
first:=true;
|
first:=true;
|
||||||
for i:=0 to regcount-1 do
|
for i:=0 to regcount-1 do
|
||||||
begin
|
begin
|
||||||
@ -251,9 +286,11 @@ begin
|
|||||||
begin
|
begin
|
||||||
writeln(numfile,',');
|
writeln(numfile,',');
|
||||||
writeln(stdfile,',');
|
writeln(stdfile,',');
|
||||||
|
writeln(gasfile,',');
|
||||||
writeln(stabfile,',');
|
writeln(stabfile,',');
|
||||||
writeln(rnifile,',');
|
writeln(rnifile,',');
|
||||||
writeln(srifile,',');
|
writeln(srifile,',');
|
||||||
|
writeln(grifile,',');
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
first:=false;
|
first:=false;
|
||||||
@ -261,19 +298,23 @@ begin
|
|||||||
writeln(confile,'NR_'+names[i],' = ','tregister(',numbers[i],')',';');
|
writeln(confile,'NR_'+names[i],' = ','tregister(',numbers[i],')',';');
|
||||||
write(numfile,'tregister(',numbers[i],')');
|
write(numfile,'tregister(',numbers[i],')');
|
||||||
write(stdfile,'''',stdnames[i],'''');
|
write(stdfile,'''',stdnames[i],'''');
|
||||||
|
write(gasfile,'''',gasnames[i],'''');
|
||||||
write(stabfile,stabs[i]);
|
write(stabfile,stabs[i]);
|
||||||
write(rnifile,regnumber_index[i]);
|
write(rnifile,regnumber_index[i]);
|
||||||
write(srifile,std_regname_index[i]);
|
write(srifile,std_regname_index[i]);
|
||||||
|
write(grifile,gas_regname_index[i]);
|
||||||
end;
|
end;
|
||||||
write(norfile,regcount);
|
write(norfile,regcount);
|
||||||
close(confile);
|
close(confile);
|
||||||
close(supfile);
|
close(supfile);
|
||||||
closeinc(numfile);
|
closeinc(numfile);
|
||||||
closeinc(stdfile);
|
closeinc(stdfile);
|
||||||
|
closeinc(gasfile);
|
||||||
closeinc(stabfile);
|
closeinc(stabfile);
|
||||||
closeinc(norfile);
|
closeinc(norfile);
|
||||||
closeinc(rnifile);
|
closeinc(rnifile);
|
||||||
closeinc(srifile);
|
closeinc(srifile);
|
||||||
|
closeinc(grifile);
|
||||||
writeln('Done!');
|
writeln('Done!');
|
||||||
writeln(regcount,' registers procesed');
|
writeln(regcount,' registers procesed');
|
||||||
end;
|
end;
|
||||||
@ -289,11 +330,15 @@ begin
|
|||||||
regcount_bsstart:=regcount_bsstart*2;
|
regcount_bsstart:=regcount_bsstart*2;
|
||||||
build_regnum_index;
|
build_regnum_index;
|
||||||
build_std_regname_index;
|
build_std_regname_index;
|
||||||
|
build_gas_regname_index;
|
||||||
write_inc_files;
|
write_inc_files;
|
||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$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
|
* fixed more alignment issues
|
||||||
|
|
||||||
Revision 1.2 2003/12/10 02:22:59 karoly
|
Revision 1.2 2003/12/10 02:22:59 karoly
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user