mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-07 17:47:56 +02:00
m68k: add subregisters. on 68k, these are not as universal as on x86 and work differently, but the compiler needs this infrastructure to do 16bit math (which is a massive improvement on '000) or word-size indexes on CPUs which support it
git-svn-id: trunk@43043 -
This commit is contained in:
parent
912bc1e65b
commit
19a6964088
2
.gitattributes
vendored
2
.gitattributes
vendored
@ -396,6 +396,7 @@ compiler/m68k/n68kset.pas svneol=native#text/plain
|
||||
compiler/m68k/r68kbss.inc svneol=native#text/plain
|
||||
compiler/m68k/r68kcon.inc svneol=native#text/plain
|
||||
compiler/m68k/r68kgas.inc svneol=native#text/plain
|
||||
compiler/m68k/r68kgasf.inc svneol=native#text/plain
|
||||
compiler/m68k/r68kgri.inc svneol=native#text/plain
|
||||
compiler/m68k/r68knor.inc svneol=native#text/plain
|
||||
compiler/m68k/r68knum.inc svneol=native#text/plain
|
||||
@ -403,6 +404,7 @@ compiler/m68k/r68krni.inc svneol=native#text/plain
|
||||
compiler/m68k/r68ksri.inc svneol=native#text/plain
|
||||
compiler/m68k/r68ksta.inc svneol=native#text/plain
|
||||
compiler/m68k/r68kstd.inc svneol=native#text/plain
|
||||
compiler/m68k/r68kstdf.inc svneol=native#text/plain
|
||||
compiler/m68k/r68ksup.inc svneol=native#text/plain
|
||||
compiler/m68k/ra68k.pas svneol=native#text/plain
|
||||
compiler/m68k/ra68kmot.pas svneol=native#text/plain
|
||||
|
@ -111,7 +111,7 @@ interface
|
||||
with ref do
|
||||
begin
|
||||
basestr:=gas_regname(base);
|
||||
indexstr:=gas_regname(index);
|
||||
indexstr:=gas_regfullname(index);
|
||||
|
||||
if assigned(symbol) then
|
||||
begin
|
||||
@ -138,17 +138,17 @@ interface
|
||||
if (base<>NR_NO) and (index<>NR_NO) then
|
||||
begin
|
||||
if scalefactor in [0,1] then
|
||||
s:=s+'('+basestr+','+indexstr+'.l)'
|
||||
s:=s+'('+basestr+','+indexstr+')'
|
||||
else
|
||||
s:=s+'('+basestr+','+indexstr+'.l*'+tostr(scalefactor)+')';
|
||||
s:=s+'('+basestr+','+indexstr+'*'+tostr(scalefactor)+')';
|
||||
exit;
|
||||
end;
|
||||
if (base=NR_NO) and (index<>NR_NO) then
|
||||
begin
|
||||
if scalefactor in [0,1] then
|
||||
s:=s+'('+indexstr+'.l)'
|
||||
s:=s+'('+indexstr+')'
|
||||
else
|
||||
s:=s+'('+indexstr+'.l*'+tostr(scalefactor)+')';
|
||||
s:=s+'('+indexstr+'*'+tostr(scalefactor)+')';
|
||||
exit;
|
||||
end;
|
||||
end;
|
||||
|
@ -116,7 +116,7 @@ unit cpubase;
|
||||
{$i r68ksup.inc}
|
||||
RS_SP = RS_A7;
|
||||
|
||||
R_SUBWHOLE = R_SUBNONE;
|
||||
R_SUBWHOLE = R_SUBD;
|
||||
|
||||
{ Available Registers }
|
||||
{$i r68kcon.inc}
|
||||
@ -454,25 +454,40 @@ implementation
|
||||
end;
|
||||
|
||||
function cgsize2subreg(regtype: tregistertype; s:Tcgsize):Tsubregister;
|
||||
var p: pointer;
|
||||
begin
|
||||
case s of
|
||||
OS_8,OS_S8:
|
||||
case regtype of
|
||||
R_INTREGISTER:
|
||||
if (CPUM68K_HAS_BYTEWORDMATH in cpu_capabilities[current_settings.cputype]) then
|
||||
case s of
|
||||
OS_8,OS_S8:
|
||||
cgsize2subreg:=R_SUBL;
|
||||
OS_16,OS_S16:
|
||||
cgsize2subreg:=R_SUBW;
|
||||
OS_32,OS_S32:
|
||||
cgsize2subreg:=R_SUBD;
|
||||
OS_NO:
|
||||
cgsize2subreg:=R_SUBNONE;
|
||||
else
|
||||
internalerror(2019090801);
|
||||
end
|
||||
else
|
||||
case s of
|
||||
OS_8,OS_S8,
|
||||
OS_16,OS_S16,
|
||||
OS_32,OS_S32:
|
||||
cgsize2subreg:=R_SUBWHOLE;
|
||||
OS_NO:
|
||||
cgsize2subreg:=R_SUBNONE;
|
||||
else
|
||||
internalerror(2019090803);
|
||||
end;
|
||||
R_ADDRESSREGISTER:
|
||||
cgsize2subreg:=R_SUBWHOLE;
|
||||
OS_16,OS_S16:
|
||||
cgsize2subreg:=R_SUBWHOLE;
|
||||
OS_32,OS_S32:
|
||||
cgsize2subreg:=R_SUBWHOLE;
|
||||
OS_64,OS_S64:
|
||||
cgsize2subreg:=R_SUBWHOLE;
|
||||
|
||||
OS_F32,OS_F64 :
|
||||
R_FPUREGISTER:
|
||||
cgsize2subreg:=R_SUBNONE;
|
||||
|
||||
OS_NO:
|
||||
cgsize2subreg:=R_SUBNONE;
|
||||
else
|
||||
internalerror(2019090801);
|
||||
internalerror(2019090802);
|
||||
end;
|
||||
end;
|
||||
|
||||
|
@ -90,18 +90,23 @@ interface
|
||||
|
||||
function gas_regnum_search(const s:string):Tregister;
|
||||
function gas_regname(r:Tregister):string;
|
||||
function gas_regfullname(r:Tregister):string;
|
||||
|
||||
implementation
|
||||
|
||||
const
|
||||
gas_regname_table : array[tregisterindex] of string[7] = (
|
||||
{r386att.inc contains the AT&T name of each register.}
|
||||
{r68kgas.inc contains the name of each register.}
|
||||
{$i r68kgas.inc}
|
||||
);
|
||||
|
||||
gas_regfullname_table : array[tregisterindex] of string[7] = (
|
||||
{r68kgasf.inc contains the "full" name of each register.}
|
||||
{$i r68kgasf.inc}
|
||||
);
|
||||
|
||||
gas_regname_index : array[tregisterindex] of tregisterindex = (
|
||||
{r386ari.inc contains an index which sorts att_regname_table by
|
||||
ATT name.}
|
||||
{r68kgri.inc contains an index which sorts gas_regname_table by name }
|
||||
{$i r68kgri.inc}
|
||||
);
|
||||
|
||||
@ -142,4 +147,15 @@ interface
|
||||
result:='%'+generic_regname(r);
|
||||
end;
|
||||
|
||||
function gas_regfullname(r:Tregister):string;
|
||||
var
|
||||
p : tregisterindex;
|
||||
begin
|
||||
p:=findreg_by_number(r);
|
||||
if p<>0 then
|
||||
result:=gas_regfullname_table[p]
|
||||
else
|
||||
result:='%'+generic_regname(r);
|
||||
end;
|
||||
|
||||
end.
|
||||
|
@ -2,43 +2,67 @@
|
||||
; Motorola 680x0 registers
|
||||
;
|
||||
; layout
|
||||
; <name>,<value>,<stdname>,<gasname>,<stabidx>
|
||||
; <name>,<value>,<stdname>,<gasname>,<stfullname>,<gasfullname>,<stabidx>
|
||||
;
|
||||
NO,$00000000,INVALID,INVALID,-1
|
||||
NO,$00000000,INVALID,INVALID,INVALID,INVALID,-1
|
||||
|
||||
D0,$01000000,d0,%d0,0
|
||||
D1,$01000001,d1,%d1,1
|
||||
D2,$01000002,d2,%d2,2
|
||||
D3,$01000003,d3,%d3,3
|
||||
D4,$01000004,d4,%d4,4
|
||||
D5,$01000005,d5,%d5,5
|
||||
D6,$01000006,d6,%d6,6
|
||||
D7,$01000007,d7,%d7,7
|
||||
D0,$01040000,d0,%d0,d0.l,%d0.l,0
|
||||
D0W,$01030000,d0,%d0,d0.w,%d0.w,0
|
||||
D0B,$01010000,d0,%d0,d0.b,%d0.b,0
|
||||
D1,$01040001,d1,%d1,d1.l,%d1.l,1
|
||||
D1W,$01030001,d1,%d1,d1.w,%d1.w,1
|
||||
D1B,$01010001,d1,%d1,d1.b,%d1.b,1
|
||||
D2,$01040002,d2,%d2,d2.l,%d2.l,2
|
||||
D2W,$01030002,d2,%d2,d2.w,%d2.w,2
|
||||
D2B,$01010002,d2,%d2,d2.b,%d2.b,2
|
||||
D3,$01040003,d3,%d3,d3.l,%d3.l,3
|
||||
D3W,$01030003,d3,%d3,d3.w,%d3.w,3
|
||||
D3B,$01010003,d3,%d3,d3.b,%d3.b,3
|
||||
D4,$01040004,d4,%d4,d4.l,%d4.l,4
|
||||
D4W,$01030004,d4,%d4,d4.w,%d4.w,4
|
||||
D4B,$01010004,d4,%d4,d4.b,%d4.b,4
|
||||
D5,$01040005,d5,%d5,d5.l,%d5.l,5
|
||||
D5W,$01030005,d5,%d5,d5.w,%d5.w,5
|
||||
D5B,$01010005,d5,%d5,d5.b,%d5.b,5
|
||||
D6,$01040006,d6,%d6,d6.l,%d6.l,6
|
||||
D6W,$01030006,d6,%d6,d6.w,%d6.w,6
|
||||
D6B,$01010006,d6,%d6,d6.b,%d6.b,6
|
||||
D7,$01040007,d7,%d7,d7.l,%d7.l,7
|
||||
D7W,$01030007,d7,%d7,d7.w,%d7.w,7
|
||||
D7B,$01010007,d7,%d7,d7.b,%d7.b,7
|
||||
|
||||
FP0,$02000000,fp0,%fp0,16
|
||||
FP1,$02000001,fp1,%fp1,17
|
||||
FP2,$02000002,fp2,%fp2,18
|
||||
FP3,$02000003,fp3,%fp3,19
|
||||
FP4,$02000004,fp4,%fp4,20
|
||||
FP5,$02000005,fp5,%fp5,21
|
||||
FP6,$02000006,fp6,%fp6,22
|
||||
FP7,$02000007,fp7,%fp7,23
|
||||
FP0,$02000000,fp0,%fp0,fp0,%fp0,16
|
||||
FP1,$02000001,fp1,%fp1,fp1,%fp1,17
|
||||
FP2,$02000002,fp2,%fp2,fp2,%fp2,18
|
||||
FP3,$02000003,fp3,%fp3,fp3,%fp3,19
|
||||
FP4,$02000004,fp4,%fp4,fp4,%fp4,20
|
||||
FP5,$02000005,fp5,%fp5,fp5,%fp5,21
|
||||
FP6,$02000006,fp6,%fp6,fp6,%fp6,22
|
||||
FP7,$02000007,fp7,%fp7,fp7,%fp7,23
|
||||
|
||||
PC,$05000000,pc,%pc,24
|
||||
CCR,$05000001,ccr,%ccr,0
|
||||
FPCR,$05000002,fpcr,%fpcr,0
|
||||
SR,$05000003,sr,%sr,0
|
||||
SSP,$05000004,ssp,%ssp,0
|
||||
DFC,$05000005,dfc,%dfc,0
|
||||
SFC,$05000006,sfc,%sfc,0
|
||||
VBR,$05000007,vbr,%vbr,0
|
||||
FPSR,$05000008,fpsr,%fpsr,0
|
||||
PC,$05000000,pc,%pc,pc,%pc,24
|
||||
CCR,$05000001,ccr,%ccr,ccr,%ccr,0
|
||||
FPCR,$05000002,fpcr,%fpcr,fpcr,%fpcr,0
|
||||
SR,$05000003,sr,%sr,sr,%sr,0
|
||||
SSP,$05000004,ssp,%ssp,ssp,%ssp,0
|
||||
DFC,$05000005,dfc,%dfc,dfc,%dfc,0
|
||||
SFC,$05000006,sfc,%sfc,sfc,%sfc,0
|
||||
VBR,$05000007,vbr,%vbr,vbr,%vbr,0
|
||||
FPSR,$05000008,fpsr,%fpsr,fpsr,%fpsr,0
|
||||
|
||||
A0,$06000000,a0,%a0,8
|
||||
A1,$06000001,a1,%a1,9
|
||||
A2,$06000002,a2,%a2,10
|
||||
A3,$06000003,a3,%a3,11
|
||||
A4,$06000004,a4,%a4,12
|
||||
A5,$06000005,a5,%a5,13
|
||||
A6,$06000006,a6,%a6,14
|
||||
A7,$06000007,a7,%a7,15
|
||||
A0,$06040000,a0,%a0,a0.l,%a0.l,8
|
||||
A0W,$06030000,a0,%a0,a0.w,%a0.w,8
|
||||
A1,$06040001,a1,%a1,a1.l,%a1.l,9
|
||||
A1W,$06030001,a1,%a1,a1.w,%a1.w,9
|
||||
A2,$06040002,a2,%a2,a2.l,%a2.l,10
|
||||
A2W,$06030002,a2,%a2,a2.w,%a2.w,10
|
||||
A3,$06040003,a3,%a3,a3.l,%a3.l,11
|
||||
A3W,$06030003,a3,%a3,a3.w,%a3.w,11
|
||||
A4,$06040004,a4,%a4,a4.l,%a4.l,12
|
||||
A4W,$06030004,a4,%a4,a4.w,%a4.w,12
|
||||
A5,$06040005,a5,%a5,a5.l,%a5.l,13
|
||||
A5W,$06030005,a5,%a5,a5.w,%a5.w,13
|
||||
A6,$06040006,a6,%a6,a6.l,%a6.l,14
|
||||
A6W,$06030006,a6,%a6,a6.w,%a6.w,14
|
||||
A7,$06040007,a7,%a7,a7.l,%a7.l,15
|
||||
A7W,$06020007,a7,%a7,a7.w,%a7.w,15
|
||||
|
@ -1,13 +1,29 @@
|
||||
{ don't edit, this file is generated from m68kreg.dat }
|
||||
NR_NO = tregister($00000000);
|
||||
NR_D0 = tregister($01000000);
|
||||
NR_D1 = tregister($01000001);
|
||||
NR_D2 = tregister($01000002);
|
||||
NR_D3 = tregister($01000003);
|
||||
NR_D4 = tregister($01000004);
|
||||
NR_D5 = tregister($01000005);
|
||||
NR_D6 = tregister($01000006);
|
||||
NR_D7 = tregister($01000007);
|
||||
NR_D0 = tregister($01040000);
|
||||
NR_D0W = tregister($01030000);
|
||||
NR_D0B = tregister($01010000);
|
||||
NR_D1 = tregister($01040001);
|
||||
NR_D1W = tregister($01030001);
|
||||
NR_D1B = tregister($01010001);
|
||||
NR_D2 = tregister($01040002);
|
||||
NR_D2W = tregister($01030002);
|
||||
NR_D2B = tregister($01010002);
|
||||
NR_D3 = tregister($01040003);
|
||||
NR_D3W = tregister($01030003);
|
||||
NR_D3B = tregister($01010003);
|
||||
NR_D4 = tregister($01040004);
|
||||
NR_D4W = tregister($01030004);
|
||||
NR_D4B = tregister($01010004);
|
||||
NR_D5 = tregister($01040005);
|
||||
NR_D5W = tregister($01030005);
|
||||
NR_D5B = tregister($01010005);
|
||||
NR_D6 = tregister($01040006);
|
||||
NR_D6W = tregister($01030006);
|
||||
NR_D6B = tregister($01010006);
|
||||
NR_D7 = tregister($01040007);
|
||||
NR_D7W = tregister($01030007);
|
||||
NR_D7B = tregister($01010007);
|
||||
NR_FP0 = tregister($02000000);
|
||||
NR_FP1 = tregister($02000001);
|
||||
NR_FP2 = tregister($02000002);
|
||||
@ -25,11 +41,19 @@ NR_DFC = tregister($05000005);
|
||||
NR_SFC = tregister($05000006);
|
||||
NR_VBR = tregister($05000007);
|
||||
NR_FPSR = tregister($05000008);
|
||||
NR_A0 = tregister($06000000);
|
||||
NR_A1 = tregister($06000001);
|
||||
NR_A2 = tregister($06000002);
|
||||
NR_A3 = tregister($06000003);
|
||||
NR_A4 = tregister($06000004);
|
||||
NR_A5 = tregister($06000005);
|
||||
NR_A6 = tregister($06000006);
|
||||
NR_A7 = tregister($06000007);
|
||||
NR_A0 = tregister($06040000);
|
||||
NR_A0W = tregister($06030000);
|
||||
NR_A1 = tregister($06040001);
|
||||
NR_A1W = tregister($06030001);
|
||||
NR_A2 = tregister($06040002);
|
||||
NR_A2W = tregister($06030002);
|
||||
NR_A3 = tregister($06040003);
|
||||
NR_A3W = tregister($06030003);
|
||||
NR_A4 = tregister($06040004);
|
||||
NR_A4W = tregister($06030004);
|
||||
NR_A5 = tregister($06040005);
|
||||
NR_A5W = tregister($06030005);
|
||||
NR_A6 = tregister($06040006);
|
||||
NR_A6W = tregister($06030006);
|
||||
NR_A7 = tregister($06040007);
|
||||
NR_A7W = tregister($06020007);
|
||||
|
@ -1,12 +1,28 @@
|
||||
{ don't edit, this file is generated from m68kreg.dat }
|
||||
'INVALID',
|
||||
'%d0',
|
||||
'%d0',
|
||||
'%d0',
|
||||
'%d1',
|
||||
'%d1',
|
||||
'%d1',
|
||||
'%d2',
|
||||
'%d2',
|
||||
'%d2',
|
||||
'%d3',
|
||||
'%d3',
|
||||
'%d3',
|
||||
'%d4',
|
||||
'%d4',
|
||||
'%d4',
|
||||
'%d5',
|
||||
'%d5',
|
||||
'%d5',
|
||||
'%d6',
|
||||
'%d6',
|
||||
'%d6',
|
||||
'%d7',
|
||||
'%d7',
|
||||
'%d7',
|
||||
'%fp0',
|
||||
'%fp1',
|
||||
@ -26,10 +42,18 @@
|
||||
'%vbr',
|
||||
'%fpsr',
|
||||
'%a0',
|
||||
'%a0',
|
||||
'%a1',
|
||||
'%a1',
|
||||
'%a2',
|
||||
'%a2',
|
||||
'%a3',
|
||||
'%a3',
|
||||
'%a4',
|
||||
'%a4',
|
||||
'%a5',
|
||||
'%a5',
|
||||
'%a6',
|
||||
'%a6',
|
||||
'%a7',
|
||||
'%a7'
|
||||
|
59
compiler/m68k/r68kgasf.inc
Normal file
59
compiler/m68k/r68kgasf.inc
Normal file
@ -0,0 +1,59 @@
|
||||
{ don't edit, this file is generated from m68kreg.dat }
|
||||
'INVALID',
|
||||
'%d0.l',
|
||||
'%d0.w',
|
||||
'%d0.b',
|
||||
'%d1.l',
|
||||
'%d1.w',
|
||||
'%d1.b',
|
||||
'%d2.l',
|
||||
'%d2.w',
|
||||
'%d2.b',
|
||||
'%d3.l',
|
||||
'%d3.w',
|
||||
'%d3.b',
|
||||
'%d4.l',
|
||||
'%d4.w',
|
||||
'%d4.b',
|
||||
'%d5.l',
|
||||
'%d5.w',
|
||||
'%d5.b',
|
||||
'%d6.l',
|
||||
'%d6.w',
|
||||
'%d6.b',
|
||||
'%d7.l',
|
||||
'%d7.w',
|
||||
'%d7.b',
|
||||
'%fp0',
|
||||
'%fp1',
|
||||
'%fp2',
|
||||
'%fp3',
|
||||
'%fp4',
|
||||
'%fp5',
|
||||
'%fp6',
|
||||
'%fp7',
|
||||
'%pc',
|
||||
'%ccr',
|
||||
'%fpcr',
|
||||
'%sr',
|
||||
'%ssp',
|
||||
'%dfc',
|
||||
'%sfc',
|
||||
'%vbr',
|
||||
'%fpsr',
|
||||
'%a0.l',
|
||||
'%a0.w',
|
||||
'%a1.l',
|
||||
'%a1.w',
|
||||
'%a2.l',
|
||||
'%a2.w',
|
||||
'%a3.l',
|
||||
'%a3.w',
|
||||
'%a4.l',
|
||||
'%a4.w',
|
||||
'%a5.l',
|
||||
'%a5.w',
|
||||
'%a6.l',
|
||||
'%a6.w',
|
||||
'%a7.l',
|
||||
'%a7.w'
|
@ -1,13 +1,21 @@
|
||||
{ don't edit, this file is generated from m68kreg.dat }
|
||||
26,
|
||||
27,
|
||||
28,
|
||||
29,
|
||||
30,
|
||||
31,
|
||||
32,
|
||||
33,
|
||||
18,
|
||||
42,
|
||||
43,
|
||||
44,
|
||||
45,
|
||||
46,
|
||||
47,
|
||||
48,
|
||||
49,
|
||||
50,
|
||||
51,
|
||||
52,
|
||||
53,
|
||||
54,
|
||||
55,
|
||||
56,
|
||||
57,
|
||||
34,
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
@ -16,20 +24,36 @@
|
||||
6,
|
||||
7,
|
||||
8,
|
||||
22,
|
||||
9,
|
||||
10,
|
||||
11,
|
||||
12,
|
||||
11,
|
||||
10,
|
||||
13,
|
||||
14,
|
||||
15,
|
||||
16,
|
||||
19,
|
||||
25,
|
||||
17,
|
||||
23,
|
||||
18,
|
||||
19,
|
||||
20,
|
||||
21,
|
||||
24,
|
||||
23,
|
||||
22,
|
||||
38,
|
||||
25,
|
||||
26,
|
||||
27,
|
||||
28,
|
||||
29,
|
||||
30,
|
||||
31,
|
||||
32,
|
||||
35,
|
||||
41,
|
||||
33,
|
||||
39,
|
||||
36,
|
||||
37,
|
||||
40,
|
||||
0
|
||||
|
@ -1,2 +1,2 @@
|
||||
{ don't edit, this file is generated from m68kreg.dat }
|
||||
34
|
||||
58
|
||||
|
@ -1,13 +1,29 @@
|
||||
{ don't edit, this file is generated from m68kreg.dat }
|
||||
tregister($00000000),
|
||||
tregister($01000000),
|
||||
tregister($01000001),
|
||||
tregister($01000002),
|
||||
tregister($01000003),
|
||||
tregister($01000004),
|
||||
tregister($01000005),
|
||||
tregister($01000006),
|
||||
tregister($01000007),
|
||||
tregister($01040000),
|
||||
tregister($01030000),
|
||||
tregister($01010000),
|
||||
tregister($01040001),
|
||||
tregister($01030001),
|
||||
tregister($01010001),
|
||||
tregister($01040002),
|
||||
tregister($01030002),
|
||||
tregister($01010002),
|
||||
tregister($01040003),
|
||||
tregister($01030003),
|
||||
tregister($01010003),
|
||||
tregister($01040004),
|
||||
tregister($01030004),
|
||||
tregister($01010004),
|
||||
tregister($01040005),
|
||||
tregister($01030005),
|
||||
tregister($01010005),
|
||||
tregister($01040006),
|
||||
tregister($01030006),
|
||||
tregister($01010006),
|
||||
tregister($01040007),
|
||||
tregister($01030007),
|
||||
tregister($01010007),
|
||||
tregister($02000000),
|
||||
tregister($02000001),
|
||||
tregister($02000002),
|
||||
@ -25,11 +41,19 @@ tregister($05000005),
|
||||
tregister($05000006),
|
||||
tregister($05000007),
|
||||
tregister($05000008),
|
||||
tregister($06000000),
|
||||
tregister($06000001),
|
||||
tregister($06000002),
|
||||
tregister($06000003),
|
||||
tregister($06000004),
|
||||
tregister($06000005),
|
||||
tregister($06000006),
|
||||
tregister($06000007)
|
||||
tregister($06040000),
|
||||
tregister($06030000),
|
||||
tregister($06040001),
|
||||
tregister($06030001),
|
||||
tregister($06040002),
|
||||
tregister($06030002),
|
||||
tregister($06040003),
|
||||
tregister($06030003),
|
||||
tregister($06040004),
|
||||
tregister($06030004),
|
||||
tregister($06040005),
|
||||
tregister($06030005),
|
||||
tregister($06040006),
|
||||
tregister($06030006),
|
||||
tregister($06040007),
|
||||
tregister($06020007)
|
||||
|
@ -1,29 +1,29 @@
|
||||
{ don't edit, this file is generated from m68kreg.dat }
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
6,
|
||||
7,
|
||||
8,
|
||||
9,
|
||||
10,
|
||||
11,
|
||||
12,
|
||||
13,
|
||||
14,
|
||||
15,
|
||||
16,
|
||||
17,
|
||||
18,
|
||||
19,
|
||||
20,
|
||||
21,
|
||||
22,
|
||||
23,
|
||||
24,
|
||||
2,
|
||||
5,
|
||||
8,
|
||||
11,
|
||||
14,
|
||||
17,
|
||||
20,
|
||||
23,
|
||||
1,
|
||||
4,
|
||||
7,
|
||||
10,
|
||||
13,
|
||||
16,
|
||||
19,
|
||||
22,
|
||||
25,
|
||||
26,
|
||||
27,
|
||||
@ -32,4 +32,28 @@
|
||||
30,
|
||||
31,
|
||||
32,
|
||||
33
|
||||
33,
|
||||
34,
|
||||
35,
|
||||
36,
|
||||
37,
|
||||
38,
|
||||
39,
|
||||
40,
|
||||
41,
|
||||
57,
|
||||
43,
|
||||
45,
|
||||
47,
|
||||
49,
|
||||
51,
|
||||
53,
|
||||
55,
|
||||
42,
|
||||
44,
|
||||
46,
|
||||
48,
|
||||
50,
|
||||
52,
|
||||
54,
|
||||
56
|
||||
|
@ -1,5 +1,48 @@
|
||||
{ don't edit, this file is generated from m68kreg.dat }
|
||||
0,
|
||||
43,
|
||||
42,
|
||||
45,
|
||||
44,
|
||||
47,
|
||||
46,
|
||||
49,
|
||||
48,
|
||||
51,
|
||||
50,
|
||||
53,
|
||||
52,
|
||||
55,
|
||||
54,
|
||||
57,
|
||||
56,
|
||||
34,
|
||||
1,
|
||||
3,
|
||||
2,
|
||||
5,
|
||||
4,
|
||||
6,
|
||||
7,
|
||||
9,
|
||||
8,
|
||||
11,
|
||||
12,
|
||||
10,
|
||||
13,
|
||||
15,
|
||||
14,
|
||||
17,
|
||||
16,
|
||||
18,
|
||||
19,
|
||||
21,
|
||||
20,
|
||||
23,
|
||||
24,
|
||||
22,
|
||||
38,
|
||||
25,
|
||||
26,
|
||||
27,
|
||||
28,
|
||||
@ -7,29 +50,10 @@
|
||||
30,
|
||||
31,
|
||||
32,
|
||||
35,
|
||||
41,
|
||||
33,
|
||||
18,
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
6,
|
||||
7,
|
||||
8,
|
||||
22,
|
||||
9,
|
||||
10,
|
||||
11,
|
||||
12,
|
||||
13,
|
||||
14,
|
||||
15,
|
||||
16,
|
||||
19,
|
||||
25,
|
||||
17,
|
||||
23,
|
||||
20,
|
||||
21,
|
||||
24
|
||||
39,
|
||||
36,
|
||||
37,
|
||||
40
|
||||
|
@ -1,12 +1,28 @@
|
||||
{ don't edit, this file is generated from m68kreg.dat }
|
||||
-1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
3,
|
||||
3,
|
||||
3,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
5,
|
||||
5,
|
||||
5,
|
||||
6,
|
||||
6,
|
||||
6,
|
||||
7,
|
||||
7,
|
||||
7,
|
||||
16,
|
||||
17,
|
||||
@ -26,10 +42,18 @@
|
||||
0,
|
||||
0,
|
||||
8,
|
||||
8,
|
||||
9,
|
||||
9,
|
||||
10,
|
||||
10,
|
||||
11,
|
||||
11,
|
||||
12,
|
||||
12,
|
||||
13,
|
||||
13,
|
||||
14,
|
||||
14,
|
||||
15,
|
||||
15
|
||||
|
@ -1,12 +1,28 @@
|
||||
{ don't edit, this file is generated from m68kreg.dat }
|
||||
'INVALID',
|
||||
'd0',
|
||||
'd0',
|
||||
'd0',
|
||||
'd1',
|
||||
'd1',
|
||||
'd1',
|
||||
'd2',
|
||||
'd2',
|
||||
'd2',
|
||||
'd3',
|
||||
'd3',
|
||||
'd3',
|
||||
'd4',
|
||||
'd4',
|
||||
'd4',
|
||||
'd5',
|
||||
'd5',
|
||||
'd5',
|
||||
'd6',
|
||||
'd6',
|
||||
'd6',
|
||||
'd7',
|
||||
'd7',
|
||||
'd7',
|
||||
'fp0',
|
||||
'fp1',
|
||||
@ -26,10 +42,18 @@
|
||||
'vbr',
|
||||
'fpsr',
|
||||
'a0',
|
||||
'a0',
|
||||
'a1',
|
||||
'a1',
|
||||
'a2',
|
||||
'a2',
|
||||
'a3',
|
||||
'a3',
|
||||
'a4',
|
||||
'a4',
|
||||
'a5',
|
||||
'a5',
|
||||
'a6',
|
||||
'a6',
|
||||
'a7',
|
||||
'a7'
|
||||
|
59
compiler/m68k/r68kstdf.inc
Normal file
59
compiler/m68k/r68kstdf.inc
Normal file
@ -0,0 +1,59 @@
|
||||
{ don't edit, this file is generated from m68kreg.dat }
|
||||
'INVALID',
|
||||
'd0.l',
|
||||
'd0.w',
|
||||
'd0.b',
|
||||
'd1.l',
|
||||
'd1.w',
|
||||
'd1.b',
|
||||
'd2.l',
|
||||
'd2.w',
|
||||
'd2.b',
|
||||
'd3.l',
|
||||
'd3.w',
|
||||
'd3.b',
|
||||
'd4.l',
|
||||
'd4.w',
|
||||
'd4.b',
|
||||
'd5.l',
|
||||
'd5.w',
|
||||
'd5.b',
|
||||
'd6.l',
|
||||
'd6.w',
|
||||
'd6.b',
|
||||
'd7.l',
|
||||
'd7.w',
|
||||
'd7.b',
|
||||
'fp0',
|
||||
'fp1',
|
||||
'fp2',
|
||||
'fp3',
|
||||
'fp4',
|
||||
'fp5',
|
||||
'fp6',
|
||||
'fp7',
|
||||
'pc',
|
||||
'ccr',
|
||||
'fpcr',
|
||||
'sr',
|
||||
'ssp',
|
||||
'dfc',
|
||||
'sfc',
|
||||
'vbr',
|
||||
'fpsr',
|
||||
'a0.l',
|
||||
'a0.w',
|
||||
'a1.l',
|
||||
'a1.w',
|
||||
'a2.l',
|
||||
'a2.w',
|
||||
'a3.l',
|
||||
'a3.w',
|
||||
'a4.l',
|
||||
'a4.w',
|
||||
'a5.l',
|
||||
'a5.w',
|
||||
'a6.l',
|
||||
'a6.w',
|
||||
'a7.l',
|
||||
'a7.w'
|
@ -1,13 +1,13 @@
|
||||
{ don't edit, this file is generated from m68kreg.dat }
|
||||
RS_NO = $00; { $00000000 }
|
||||
RS_D0 = $00; { $01000000 }
|
||||
RS_D1 = $01; { $01000001 }
|
||||
RS_D2 = $02; { $01000002 }
|
||||
RS_D3 = $03; { $01000003 }
|
||||
RS_D4 = $04; { $01000004 }
|
||||
RS_D5 = $05; { $01000005 }
|
||||
RS_D6 = $06; { $01000006 }
|
||||
RS_D7 = $07; { $01000007 }
|
||||
RS_D0 = $00; { $01040000 }
|
||||
RS_D1 = $01; { $01040001 }
|
||||
RS_D2 = $02; { $01040002 }
|
||||
RS_D3 = $03; { $01040003 }
|
||||
RS_D4 = $04; { $01040004 }
|
||||
RS_D5 = $05; { $01040005 }
|
||||
RS_D6 = $06; { $01040006 }
|
||||
RS_D7 = $07; { $01040007 }
|
||||
RS_FP0 = $00; { $02000000 }
|
||||
RS_FP1 = $01; { $02000001 }
|
||||
RS_FP2 = $02; { $02000002 }
|
||||
@ -25,11 +25,11 @@ RS_DFC = $05; { $05000005 }
|
||||
RS_SFC = $06; { $05000006 }
|
||||
RS_VBR = $07; { $05000007 }
|
||||
RS_FPSR = $08; { $05000008 }
|
||||
RS_A0 = $00; { $06000000 }
|
||||
RS_A1 = $01; { $06000001 }
|
||||
RS_A2 = $02; { $06000002 }
|
||||
RS_A3 = $03; { $06000003 }
|
||||
RS_A4 = $04; { $06000004 }
|
||||
RS_A5 = $05; { $06000005 }
|
||||
RS_A6 = $06; { $06000006 }
|
||||
RS_A7 = $07; { $06000007 }
|
||||
RS_A0 = $00; { $06040000 }
|
||||
RS_A1 = $01; { $06040001 }
|
||||
RS_A2 = $02; { $06040002 }
|
||||
RS_A3 = $03; { $06040003 }
|
||||
RS_A4 = $04; { $06040004 }
|
||||
RS_A5 = $05; { $06040005 }
|
||||
RS_A6 = $06; { $06040006 }
|
||||
RS_A7 = $07; { $06040007 }
|
||||
|
@ -27,6 +27,8 @@ var s : string;
|
||||
values,
|
||||
stdnames,
|
||||
gasnames,
|
||||
stdfullnames,
|
||||
gasfullnames,
|
||||
stabs : array[0..max_regcount-1] of string[63];
|
||||
regnumber_index,
|
||||
std_regname_index,gas_regname_index : array[0..max_regcount-1] of byte;
|
||||
@ -203,6 +205,10 @@ begin
|
||||
readcomma;
|
||||
gasnames[regcount]:=readstr;
|
||||
readcomma;
|
||||
stdfullnames[regcount]:=readstr;
|
||||
readcomma;
|
||||
gasfullnames[regcount]:=readstr;
|
||||
readcomma;
|
||||
stabs[regcount]:=readstr;
|
||||
{ Create register number }
|
||||
if values[regcount][1]<>'$' then
|
||||
@ -230,7 +236,7 @@ end;
|
||||
procedure write_inc_files;
|
||||
|
||||
var
|
||||
norfile,stdfile,gasfile,supfile,
|
||||
norfile,stdfile,stdffile,gasfile,gasffile,supfile,
|
||||
numfile,stabfile,confile,
|
||||
rnifile,srifile,grifile,
|
||||
bssfile:text;
|
||||
@ -243,6 +249,8 @@ begin
|
||||
openinc(numfile,'r68knum.inc');
|
||||
openinc(stdfile,'r68kstd.inc');
|
||||
openinc(gasfile,'r68kgas.inc');
|
||||
openinc(stdffile,'r68kstdf.inc');
|
||||
openinc(gasffile,'r68kgasf.inc');
|
||||
openinc(stabfile,'r68ksta.inc');
|
||||
openinc(norfile,'r68knor.inc');
|
||||
openinc(rnifile,'r68krni.inc');
|
||||
@ -257,6 +265,8 @@ begin
|
||||
writeln(numfile,',');
|
||||
writeln(stdfile,',');
|
||||
writeln(gasfile,',');
|
||||
writeln(stdffile,',');
|
||||
writeln(gasffile,',');
|
||||
writeln(stabfile,',');
|
||||
writeln(rnifile,',');
|
||||
writeln(srifile,',');
|
||||
@ -270,6 +280,8 @@ begin
|
||||
write(numfile,'tregister(',values[i],')');
|
||||
write(stdfile,'''',stdnames[i],'''');
|
||||
write(gasfile,'''',gasnames[i],'''');
|
||||
write(stdffile,'''',stdfullnames[i],'''');
|
||||
write(gasffile,'''',gasfullnames[i],'''');
|
||||
write(stabfile,stabs[i]);
|
||||
write(rnifile,regnumber_index[i]);
|
||||
write(srifile,std_regname_index[i]);
|
||||
@ -282,6 +294,8 @@ begin
|
||||
closeinc(numfile);
|
||||
closeinc(stdfile);
|
||||
closeinc(gasfile);
|
||||
closeinc(stdffile);
|
||||
closeinc(gasffile);
|
||||
closeinc(stabfile);
|
||||
closeinc(norfile);
|
||||
closeinc(rnifile);
|
||||
|
Loading…
Reference in New Issue
Block a user