mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-12-11 12:10:43 +01: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/r68kbss.inc svneol=native#text/plain
|
||||||
compiler/m68k/r68kcon.inc svneol=native#text/plain
|
compiler/m68k/r68kcon.inc svneol=native#text/plain
|
||||||
compiler/m68k/r68kgas.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/r68kgri.inc svneol=native#text/plain
|
||||||
compiler/m68k/r68knor.inc svneol=native#text/plain
|
compiler/m68k/r68knor.inc svneol=native#text/plain
|
||||||
compiler/m68k/r68knum.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/r68ksri.inc svneol=native#text/plain
|
||||||
compiler/m68k/r68ksta.inc svneol=native#text/plain
|
compiler/m68k/r68ksta.inc svneol=native#text/plain
|
||||||
compiler/m68k/r68kstd.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/r68ksup.inc svneol=native#text/plain
|
||||||
compiler/m68k/ra68k.pas svneol=native#text/plain
|
compiler/m68k/ra68k.pas svneol=native#text/plain
|
||||||
compiler/m68k/ra68kmot.pas svneol=native#text/plain
|
compiler/m68k/ra68kmot.pas svneol=native#text/plain
|
||||||
|
|||||||
@ -111,7 +111,7 @@ interface
|
|||||||
with ref do
|
with ref do
|
||||||
begin
|
begin
|
||||||
basestr:=gas_regname(base);
|
basestr:=gas_regname(base);
|
||||||
indexstr:=gas_regname(index);
|
indexstr:=gas_regfullname(index);
|
||||||
|
|
||||||
if assigned(symbol) then
|
if assigned(symbol) then
|
||||||
begin
|
begin
|
||||||
@ -138,17 +138,17 @@ interface
|
|||||||
if (base<>NR_NO) and (index<>NR_NO) then
|
if (base<>NR_NO) and (index<>NR_NO) then
|
||||||
begin
|
begin
|
||||||
if scalefactor in [0,1] then
|
if scalefactor in [0,1] then
|
||||||
s:=s+'('+basestr+','+indexstr+'.l)'
|
s:=s+'('+basestr+','+indexstr+')'
|
||||||
else
|
else
|
||||||
s:=s+'('+basestr+','+indexstr+'.l*'+tostr(scalefactor)+')';
|
s:=s+'('+basestr+','+indexstr+'*'+tostr(scalefactor)+')';
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
if (base=NR_NO) and (index<>NR_NO) then
|
if (base=NR_NO) and (index<>NR_NO) then
|
||||||
begin
|
begin
|
||||||
if scalefactor in [0,1] then
|
if scalefactor in [0,1] then
|
||||||
s:=s+'('+indexstr+'.l)'
|
s:=s+'('+indexstr+')'
|
||||||
else
|
else
|
||||||
s:=s+'('+indexstr+'.l*'+tostr(scalefactor)+')';
|
s:=s+'('+indexstr+'*'+tostr(scalefactor)+')';
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|||||||
@ -116,7 +116,7 @@ unit cpubase;
|
|||||||
{$i r68ksup.inc}
|
{$i r68ksup.inc}
|
||||||
RS_SP = RS_A7;
|
RS_SP = RS_A7;
|
||||||
|
|
||||||
R_SUBWHOLE = R_SUBNONE;
|
R_SUBWHOLE = R_SUBD;
|
||||||
|
|
||||||
{ Available Registers }
|
{ Available Registers }
|
||||||
{$i r68kcon.inc}
|
{$i r68kcon.inc}
|
||||||
@ -454,25 +454,40 @@ implementation
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
function cgsize2subreg(regtype: tregistertype; s:Tcgsize):Tsubregister;
|
function cgsize2subreg(regtype: tregistertype; s:Tcgsize):Tsubregister;
|
||||||
var p: pointer;
|
|
||||||
begin
|
begin
|
||||||
case s of
|
case regtype of
|
||||||
OS_8,OS_S8:
|
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;
|
cgsize2subreg:=R_SUBWHOLE;
|
||||||
OS_16,OS_S16:
|
R_FPUREGISTER:
|
||||||
cgsize2subreg:=R_SUBWHOLE;
|
|
||||||
OS_32,OS_S32:
|
|
||||||
cgsize2subreg:=R_SUBWHOLE;
|
|
||||||
OS_64,OS_S64:
|
|
||||||
cgsize2subreg:=R_SUBWHOLE;
|
|
||||||
|
|
||||||
OS_F32,OS_F64 :
|
|
||||||
cgsize2subreg:=R_SUBNONE;
|
cgsize2subreg:=R_SUBNONE;
|
||||||
|
|
||||||
OS_NO:
|
|
||||||
cgsize2subreg:=R_SUBNONE;
|
|
||||||
else
|
else
|
||||||
internalerror(2019090801);
|
internalerror(2019090802);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|||||||
@ -90,18 +90,23 @@ interface
|
|||||||
|
|
||||||
function gas_regnum_search(const s:string):Tregister;
|
function gas_regnum_search(const s:string):Tregister;
|
||||||
function gas_regname(r:Tregister):string;
|
function gas_regname(r:Tregister):string;
|
||||||
|
function gas_regfullname(r:Tregister):string;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
const
|
const
|
||||||
gas_regname_table : array[tregisterindex] of string[7] = (
|
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}
|
{$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 = (
|
gas_regname_index : array[tregisterindex] of tregisterindex = (
|
||||||
{r386ari.inc contains an index which sorts att_regname_table by
|
{r68kgri.inc contains an index which sorts gas_regname_table by name }
|
||||||
ATT name.}
|
|
||||||
{$i r68kgri.inc}
|
{$i r68kgri.inc}
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -142,4 +147,15 @@ interface
|
|||||||
result:='%'+generic_regname(r);
|
result:='%'+generic_regname(r);
|
||||||
end;
|
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.
|
end.
|
||||||
|
|||||||
@ -2,43 +2,67 @@
|
|||||||
; Motorola 680x0 registers
|
; Motorola 680x0 registers
|
||||||
;
|
;
|
||||||
; layout
|
; 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
|
D0,$01040000,d0,%d0,d0.l,%d0.l,0
|
||||||
D1,$01000001,d1,%d1,1
|
D0W,$01030000,d0,%d0,d0.w,%d0.w,0
|
||||||
D2,$01000002,d2,%d2,2
|
D0B,$01010000,d0,%d0,d0.b,%d0.b,0
|
||||||
D3,$01000003,d3,%d3,3
|
D1,$01040001,d1,%d1,d1.l,%d1.l,1
|
||||||
D4,$01000004,d4,%d4,4
|
D1W,$01030001,d1,%d1,d1.w,%d1.w,1
|
||||||
D5,$01000005,d5,%d5,5
|
D1B,$01010001,d1,%d1,d1.b,%d1.b,1
|
||||||
D6,$01000006,d6,%d6,6
|
D2,$01040002,d2,%d2,d2.l,%d2.l,2
|
||||||
D7,$01000007,d7,%d7,7
|
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
|
FP0,$02000000,fp0,%fp0,fp0,%fp0,16
|
||||||
FP1,$02000001,fp1,%fp1,17
|
FP1,$02000001,fp1,%fp1,fp1,%fp1,17
|
||||||
FP2,$02000002,fp2,%fp2,18
|
FP2,$02000002,fp2,%fp2,fp2,%fp2,18
|
||||||
FP3,$02000003,fp3,%fp3,19
|
FP3,$02000003,fp3,%fp3,fp3,%fp3,19
|
||||||
FP4,$02000004,fp4,%fp4,20
|
FP4,$02000004,fp4,%fp4,fp4,%fp4,20
|
||||||
FP5,$02000005,fp5,%fp5,21
|
FP5,$02000005,fp5,%fp5,fp5,%fp5,21
|
||||||
FP6,$02000006,fp6,%fp6,22
|
FP6,$02000006,fp6,%fp6,fp6,%fp6,22
|
||||||
FP7,$02000007,fp7,%fp7,23
|
FP7,$02000007,fp7,%fp7,fp7,%fp7,23
|
||||||
|
|
||||||
PC,$05000000,pc,%pc,24
|
PC,$05000000,pc,%pc,pc,%pc,24
|
||||||
CCR,$05000001,ccr,%ccr,0
|
CCR,$05000001,ccr,%ccr,ccr,%ccr,0
|
||||||
FPCR,$05000002,fpcr,%fpcr,0
|
FPCR,$05000002,fpcr,%fpcr,fpcr,%fpcr,0
|
||||||
SR,$05000003,sr,%sr,0
|
SR,$05000003,sr,%sr,sr,%sr,0
|
||||||
SSP,$05000004,ssp,%ssp,0
|
SSP,$05000004,ssp,%ssp,ssp,%ssp,0
|
||||||
DFC,$05000005,dfc,%dfc,0
|
DFC,$05000005,dfc,%dfc,dfc,%dfc,0
|
||||||
SFC,$05000006,sfc,%sfc,0
|
SFC,$05000006,sfc,%sfc,sfc,%sfc,0
|
||||||
VBR,$05000007,vbr,%vbr,0
|
VBR,$05000007,vbr,%vbr,vbr,%vbr,0
|
||||||
FPSR,$05000008,fpsr,%fpsr,0
|
FPSR,$05000008,fpsr,%fpsr,fpsr,%fpsr,0
|
||||||
|
|
||||||
A0,$06000000,a0,%a0,8
|
A0,$06040000,a0,%a0,a0.l,%a0.l,8
|
||||||
A1,$06000001,a1,%a1,9
|
A0W,$06030000,a0,%a0,a0.w,%a0.w,8
|
||||||
A2,$06000002,a2,%a2,10
|
A1,$06040001,a1,%a1,a1.l,%a1.l,9
|
||||||
A3,$06000003,a3,%a3,11
|
A1W,$06030001,a1,%a1,a1.w,%a1.w,9
|
||||||
A4,$06000004,a4,%a4,12
|
A2,$06040002,a2,%a2,a2.l,%a2.l,10
|
||||||
A5,$06000005,a5,%a5,13
|
A2W,$06030002,a2,%a2,a2.w,%a2.w,10
|
||||||
A6,$06000006,a6,%a6,14
|
A3,$06040003,a3,%a3,a3.l,%a3.l,11
|
||||||
A7,$06000007,a7,%a7,15
|
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 }
|
{ don't edit, this file is generated from m68kreg.dat }
|
||||||
NR_NO = tregister($00000000);
|
NR_NO = tregister($00000000);
|
||||||
NR_D0 = tregister($01000000);
|
NR_D0 = tregister($01040000);
|
||||||
NR_D1 = tregister($01000001);
|
NR_D0W = tregister($01030000);
|
||||||
NR_D2 = tregister($01000002);
|
NR_D0B = tregister($01010000);
|
||||||
NR_D3 = tregister($01000003);
|
NR_D1 = tregister($01040001);
|
||||||
NR_D4 = tregister($01000004);
|
NR_D1W = tregister($01030001);
|
||||||
NR_D5 = tregister($01000005);
|
NR_D1B = tregister($01010001);
|
||||||
NR_D6 = tregister($01000006);
|
NR_D2 = tregister($01040002);
|
||||||
NR_D7 = tregister($01000007);
|
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_FP0 = tregister($02000000);
|
||||||
NR_FP1 = tregister($02000001);
|
NR_FP1 = tregister($02000001);
|
||||||
NR_FP2 = tregister($02000002);
|
NR_FP2 = tregister($02000002);
|
||||||
@ -25,11 +41,19 @@ NR_DFC = tregister($05000005);
|
|||||||
NR_SFC = tregister($05000006);
|
NR_SFC = tregister($05000006);
|
||||||
NR_VBR = tregister($05000007);
|
NR_VBR = tregister($05000007);
|
||||||
NR_FPSR = tregister($05000008);
|
NR_FPSR = tregister($05000008);
|
||||||
NR_A0 = tregister($06000000);
|
NR_A0 = tregister($06040000);
|
||||||
NR_A1 = tregister($06000001);
|
NR_A0W = tregister($06030000);
|
||||||
NR_A2 = tregister($06000002);
|
NR_A1 = tregister($06040001);
|
||||||
NR_A3 = tregister($06000003);
|
NR_A1W = tregister($06030001);
|
||||||
NR_A4 = tregister($06000004);
|
NR_A2 = tregister($06040002);
|
||||||
NR_A5 = tregister($06000005);
|
NR_A2W = tregister($06030002);
|
||||||
NR_A6 = tregister($06000006);
|
NR_A3 = tregister($06040003);
|
||||||
NR_A7 = tregister($06000007);
|
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 }
|
{ don't edit, this file is generated from m68kreg.dat }
|
||||||
'INVALID',
|
'INVALID',
|
||||||
'%d0',
|
'%d0',
|
||||||
|
'%d0',
|
||||||
|
'%d0',
|
||||||
|
'%d1',
|
||||||
|
'%d1',
|
||||||
'%d1',
|
'%d1',
|
||||||
'%d2',
|
'%d2',
|
||||||
|
'%d2',
|
||||||
|
'%d2',
|
||||||
|
'%d3',
|
||||||
|
'%d3',
|
||||||
'%d3',
|
'%d3',
|
||||||
'%d4',
|
'%d4',
|
||||||
|
'%d4',
|
||||||
|
'%d4',
|
||||||
|
'%d5',
|
||||||
|
'%d5',
|
||||||
'%d5',
|
'%d5',
|
||||||
'%d6',
|
'%d6',
|
||||||
|
'%d6',
|
||||||
|
'%d6',
|
||||||
|
'%d7',
|
||||||
|
'%d7',
|
||||||
'%d7',
|
'%d7',
|
||||||
'%fp0',
|
'%fp0',
|
||||||
'%fp1',
|
'%fp1',
|
||||||
@ -26,10 +42,18 @@
|
|||||||
'%vbr',
|
'%vbr',
|
||||||
'%fpsr',
|
'%fpsr',
|
||||||
'%a0',
|
'%a0',
|
||||||
|
'%a0',
|
||||||
|
'%a1',
|
||||||
'%a1',
|
'%a1',
|
||||||
'%a2',
|
'%a2',
|
||||||
|
'%a2',
|
||||||
|
'%a3',
|
||||||
'%a3',
|
'%a3',
|
||||||
'%a4',
|
'%a4',
|
||||||
|
'%a4',
|
||||||
|
'%a5',
|
||||||
'%a5',
|
'%a5',
|
||||||
'%a6',
|
'%a6',
|
||||||
|
'%a6',
|
||||||
|
'%a7',
|
||||||
'%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 }
|
{ don't edit, this file is generated from m68kreg.dat }
|
||||||
26,
|
42,
|
||||||
27,
|
43,
|
||||||
28,
|
44,
|
||||||
29,
|
45,
|
||||||
30,
|
46,
|
||||||
31,
|
47,
|
||||||
32,
|
48,
|
||||||
33,
|
49,
|
||||||
18,
|
50,
|
||||||
|
51,
|
||||||
|
52,
|
||||||
|
53,
|
||||||
|
54,
|
||||||
|
55,
|
||||||
|
56,
|
||||||
|
57,
|
||||||
|
34,
|
||||||
1,
|
1,
|
||||||
2,
|
2,
|
||||||
3,
|
3,
|
||||||
@ -16,20 +24,36 @@
|
|||||||
6,
|
6,
|
||||||
7,
|
7,
|
||||||
8,
|
8,
|
||||||
22,
|
|
||||||
9,
|
9,
|
||||||
10,
|
|
||||||
11,
|
|
||||||
12,
|
12,
|
||||||
|
11,
|
||||||
|
10,
|
||||||
13,
|
13,
|
||||||
14,
|
14,
|
||||||
15,
|
15,
|
||||||
16,
|
16,
|
||||||
19,
|
|
||||||
25,
|
|
||||||
17,
|
17,
|
||||||
23,
|
18,
|
||||||
|
19,
|
||||||
20,
|
20,
|
||||||
21,
|
21,
|
||||||
24,
|
24,
|
||||||
|
23,
|
||||||
|
22,
|
||||||
|
38,
|
||||||
|
25,
|
||||||
|
26,
|
||||||
|
27,
|
||||||
|
28,
|
||||||
|
29,
|
||||||
|
30,
|
||||||
|
31,
|
||||||
|
32,
|
||||||
|
35,
|
||||||
|
41,
|
||||||
|
33,
|
||||||
|
39,
|
||||||
|
36,
|
||||||
|
37,
|
||||||
|
40,
|
||||||
0
|
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 }
|
||||||
34
|
58
|
||||||
|
|||||||
@ -1,13 +1,29 @@
|
|||||||
{ don't edit, this file is generated from m68kreg.dat }
|
{ don't edit, this file is generated from m68kreg.dat }
|
||||||
tregister($00000000),
|
tregister($00000000),
|
||||||
tregister($01000000),
|
tregister($01040000),
|
||||||
tregister($01000001),
|
tregister($01030000),
|
||||||
tregister($01000002),
|
tregister($01010000),
|
||||||
tregister($01000003),
|
tregister($01040001),
|
||||||
tregister($01000004),
|
tregister($01030001),
|
||||||
tregister($01000005),
|
tregister($01010001),
|
||||||
tregister($01000006),
|
tregister($01040002),
|
||||||
tregister($01000007),
|
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($02000000),
|
||||||
tregister($02000001),
|
tregister($02000001),
|
||||||
tregister($02000002),
|
tregister($02000002),
|
||||||
@ -25,11 +41,19 @@ tregister($05000005),
|
|||||||
tregister($05000006),
|
tregister($05000006),
|
||||||
tregister($05000007),
|
tregister($05000007),
|
||||||
tregister($05000008),
|
tregister($05000008),
|
||||||
tregister($06000000),
|
tregister($06040000),
|
||||||
tregister($06000001),
|
tregister($06030000),
|
||||||
tregister($06000002),
|
tregister($06040001),
|
||||||
tregister($06000003),
|
tregister($06030001),
|
||||||
tregister($06000004),
|
tregister($06040002),
|
||||||
tregister($06000005),
|
tregister($06030002),
|
||||||
tregister($06000006),
|
tregister($06040003),
|
||||||
tregister($06000007)
|
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 }
|
{ don't edit, this file is generated from m68kreg.dat }
|
||||||
0,
|
0,
|
||||||
1,
|
|
||||||
2,
|
|
||||||
3,
|
3,
|
||||||
4,
|
|
||||||
5,
|
|
||||||
6,
|
6,
|
||||||
7,
|
|
||||||
8,
|
|
||||||
9,
|
9,
|
||||||
10,
|
|
||||||
11,
|
|
||||||
12,
|
12,
|
||||||
13,
|
|
||||||
14,
|
|
||||||
15,
|
15,
|
||||||
16,
|
|
||||||
17,
|
|
||||||
18,
|
18,
|
||||||
19,
|
|
||||||
20,
|
|
||||||
21,
|
21,
|
||||||
22,
|
|
||||||
23,
|
|
||||||
24,
|
24,
|
||||||
|
2,
|
||||||
|
5,
|
||||||
|
8,
|
||||||
|
11,
|
||||||
|
14,
|
||||||
|
17,
|
||||||
|
20,
|
||||||
|
23,
|
||||||
|
1,
|
||||||
|
4,
|
||||||
|
7,
|
||||||
|
10,
|
||||||
|
13,
|
||||||
|
16,
|
||||||
|
19,
|
||||||
|
22,
|
||||||
25,
|
25,
|
||||||
26,
|
26,
|
||||||
27,
|
27,
|
||||||
@ -32,4 +32,28 @@
|
|||||||
30,
|
30,
|
||||||
31,
|
31,
|
||||||
32,
|
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 }
|
{ don't edit, this file is generated from m68kreg.dat }
|
||||||
0,
|
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,
|
26,
|
||||||
27,
|
27,
|
||||||
28,
|
28,
|
||||||
@ -7,29 +50,10 @@
|
|||||||
30,
|
30,
|
||||||
31,
|
31,
|
||||||
32,
|
32,
|
||||||
|
35,
|
||||||
|
41,
|
||||||
33,
|
33,
|
||||||
18,
|
39,
|
||||||
1,
|
36,
|
||||||
2,
|
37,
|
||||||
3,
|
40
|
||||||
4,
|
|
||||||
5,
|
|
||||||
6,
|
|
||||||
7,
|
|
||||||
8,
|
|
||||||
22,
|
|
||||||
9,
|
|
||||||
10,
|
|
||||||
11,
|
|
||||||
12,
|
|
||||||
13,
|
|
||||||
14,
|
|
||||||
15,
|
|
||||||
16,
|
|
||||||
19,
|
|
||||||
25,
|
|
||||||
17,
|
|
||||||
23,
|
|
||||||
20,
|
|
||||||
21,
|
|
||||||
24
|
|
||||||
|
|||||||
@ -1,12 +1,28 @@
|
|||||||
{ don't edit, this file is generated from m68kreg.dat }
|
{ don't edit, this file is generated from m68kreg.dat }
|
||||||
-1,
|
-1,
|
||||||
0,
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
1,
|
||||||
|
1,
|
||||||
1,
|
1,
|
||||||
2,
|
2,
|
||||||
|
2,
|
||||||
|
2,
|
||||||
|
3,
|
||||||
|
3,
|
||||||
3,
|
3,
|
||||||
4,
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
5,
|
||||||
|
5,
|
||||||
5,
|
5,
|
||||||
6,
|
6,
|
||||||
|
6,
|
||||||
|
6,
|
||||||
|
7,
|
||||||
|
7,
|
||||||
7,
|
7,
|
||||||
16,
|
16,
|
||||||
17,
|
17,
|
||||||
@ -26,10 +42,18 @@
|
|||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
8,
|
8,
|
||||||
|
8,
|
||||||
|
9,
|
||||||
9,
|
9,
|
||||||
10,
|
10,
|
||||||
|
10,
|
||||||
|
11,
|
||||||
11,
|
11,
|
||||||
12,
|
12,
|
||||||
|
12,
|
||||||
|
13,
|
||||||
13,
|
13,
|
||||||
14,
|
14,
|
||||||
|
14,
|
||||||
|
15,
|
||||||
15
|
15
|
||||||
|
|||||||
@ -1,12 +1,28 @@
|
|||||||
{ don't edit, this file is generated from m68kreg.dat }
|
{ don't edit, this file is generated from m68kreg.dat }
|
||||||
'INVALID',
|
'INVALID',
|
||||||
'd0',
|
'd0',
|
||||||
|
'd0',
|
||||||
|
'd0',
|
||||||
|
'd1',
|
||||||
|
'd1',
|
||||||
'd1',
|
'd1',
|
||||||
'd2',
|
'd2',
|
||||||
|
'd2',
|
||||||
|
'd2',
|
||||||
|
'd3',
|
||||||
|
'd3',
|
||||||
'd3',
|
'd3',
|
||||||
'd4',
|
'd4',
|
||||||
|
'd4',
|
||||||
|
'd4',
|
||||||
|
'd5',
|
||||||
|
'd5',
|
||||||
'd5',
|
'd5',
|
||||||
'd6',
|
'd6',
|
||||||
|
'd6',
|
||||||
|
'd6',
|
||||||
|
'd7',
|
||||||
|
'd7',
|
||||||
'd7',
|
'd7',
|
||||||
'fp0',
|
'fp0',
|
||||||
'fp1',
|
'fp1',
|
||||||
@ -26,10 +42,18 @@
|
|||||||
'vbr',
|
'vbr',
|
||||||
'fpsr',
|
'fpsr',
|
||||||
'a0',
|
'a0',
|
||||||
|
'a0',
|
||||||
|
'a1',
|
||||||
'a1',
|
'a1',
|
||||||
'a2',
|
'a2',
|
||||||
|
'a2',
|
||||||
|
'a3',
|
||||||
'a3',
|
'a3',
|
||||||
'a4',
|
'a4',
|
||||||
|
'a4',
|
||||||
|
'a5',
|
||||||
'a5',
|
'a5',
|
||||||
'a6',
|
'a6',
|
||||||
|
'a6',
|
||||||
|
'a7',
|
||||||
'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 }
|
{ don't edit, this file is generated from m68kreg.dat }
|
||||||
RS_NO = $00; { $00000000 }
|
RS_NO = $00; { $00000000 }
|
||||||
RS_D0 = $00; { $01000000 }
|
RS_D0 = $00; { $01040000 }
|
||||||
RS_D1 = $01; { $01000001 }
|
RS_D1 = $01; { $01040001 }
|
||||||
RS_D2 = $02; { $01000002 }
|
RS_D2 = $02; { $01040002 }
|
||||||
RS_D3 = $03; { $01000003 }
|
RS_D3 = $03; { $01040003 }
|
||||||
RS_D4 = $04; { $01000004 }
|
RS_D4 = $04; { $01040004 }
|
||||||
RS_D5 = $05; { $01000005 }
|
RS_D5 = $05; { $01040005 }
|
||||||
RS_D6 = $06; { $01000006 }
|
RS_D6 = $06; { $01040006 }
|
||||||
RS_D7 = $07; { $01000007 }
|
RS_D7 = $07; { $01040007 }
|
||||||
RS_FP0 = $00; { $02000000 }
|
RS_FP0 = $00; { $02000000 }
|
||||||
RS_FP1 = $01; { $02000001 }
|
RS_FP1 = $01; { $02000001 }
|
||||||
RS_FP2 = $02; { $02000002 }
|
RS_FP2 = $02; { $02000002 }
|
||||||
@ -25,11 +25,11 @@ RS_DFC = $05; { $05000005 }
|
|||||||
RS_SFC = $06; { $05000006 }
|
RS_SFC = $06; { $05000006 }
|
||||||
RS_VBR = $07; { $05000007 }
|
RS_VBR = $07; { $05000007 }
|
||||||
RS_FPSR = $08; { $05000008 }
|
RS_FPSR = $08; { $05000008 }
|
||||||
RS_A0 = $00; { $06000000 }
|
RS_A0 = $00; { $06040000 }
|
||||||
RS_A1 = $01; { $06000001 }
|
RS_A1 = $01; { $06040001 }
|
||||||
RS_A2 = $02; { $06000002 }
|
RS_A2 = $02; { $06040002 }
|
||||||
RS_A3 = $03; { $06000003 }
|
RS_A3 = $03; { $06040003 }
|
||||||
RS_A4 = $04; { $06000004 }
|
RS_A4 = $04; { $06040004 }
|
||||||
RS_A5 = $05; { $06000005 }
|
RS_A5 = $05; { $06040005 }
|
||||||
RS_A6 = $06; { $06000006 }
|
RS_A6 = $06; { $06040006 }
|
||||||
RS_A7 = $07; { $06000007 }
|
RS_A7 = $07; { $06040007 }
|
||||||
|
|||||||
@ -27,6 +27,8 @@ var s : string;
|
|||||||
values,
|
values,
|
||||||
stdnames,
|
stdnames,
|
||||||
gasnames,
|
gasnames,
|
||||||
|
stdfullnames,
|
||||||
|
gasfullnames,
|
||||||
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,gas_regname_index : array[0..max_regcount-1] of byte;
|
std_regname_index,gas_regname_index : array[0..max_regcount-1] of byte;
|
||||||
@ -203,6 +205,10 @@ begin
|
|||||||
readcomma;
|
readcomma;
|
||||||
gasnames[regcount]:=readstr;
|
gasnames[regcount]:=readstr;
|
||||||
readcomma;
|
readcomma;
|
||||||
|
stdfullnames[regcount]:=readstr;
|
||||||
|
readcomma;
|
||||||
|
gasfullnames[regcount]:=readstr;
|
||||||
|
readcomma;
|
||||||
stabs[regcount]:=readstr;
|
stabs[regcount]:=readstr;
|
||||||
{ Create register number }
|
{ Create register number }
|
||||||
if values[regcount][1]<>'$' then
|
if values[regcount][1]<>'$' then
|
||||||
@ -230,7 +236,7 @@ end;
|
|||||||
procedure write_inc_files;
|
procedure write_inc_files;
|
||||||
|
|
||||||
var
|
var
|
||||||
norfile,stdfile,gasfile,supfile,
|
norfile,stdfile,stdffile,gasfile,gasffile,supfile,
|
||||||
numfile,stabfile,confile,
|
numfile,stabfile,confile,
|
||||||
rnifile,srifile,grifile,
|
rnifile,srifile,grifile,
|
||||||
bssfile:text;
|
bssfile:text;
|
||||||
@ -243,6 +249,8 @@ begin
|
|||||||
openinc(numfile,'r68knum.inc');
|
openinc(numfile,'r68knum.inc');
|
||||||
openinc(stdfile,'r68kstd.inc');
|
openinc(stdfile,'r68kstd.inc');
|
||||||
openinc(gasfile,'r68kgas.inc');
|
openinc(gasfile,'r68kgas.inc');
|
||||||
|
openinc(stdffile,'r68kstdf.inc');
|
||||||
|
openinc(gasffile,'r68kgasf.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');
|
||||||
@ -257,6 +265,8 @@ begin
|
|||||||
writeln(numfile,',');
|
writeln(numfile,',');
|
||||||
writeln(stdfile,',');
|
writeln(stdfile,',');
|
||||||
writeln(gasfile,',');
|
writeln(gasfile,',');
|
||||||
|
writeln(stdffile,',');
|
||||||
|
writeln(gasffile,',');
|
||||||
writeln(stabfile,',');
|
writeln(stabfile,',');
|
||||||
writeln(rnifile,',');
|
writeln(rnifile,',');
|
||||||
writeln(srifile,',');
|
writeln(srifile,',');
|
||||||
@ -270,6 +280,8 @@ begin
|
|||||||
write(numfile,'tregister(',values[i],')');
|
write(numfile,'tregister(',values[i],')');
|
||||||
write(stdfile,'''',stdnames[i],'''');
|
write(stdfile,'''',stdnames[i],'''');
|
||||||
write(gasfile,'''',gasnames[i],'''');
|
write(gasfile,'''',gasnames[i],'''');
|
||||||
|
write(stdffile,'''',stdfullnames[i],'''');
|
||||||
|
write(gasffile,'''',gasfullnames[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]);
|
||||||
@ -282,6 +294,8 @@ begin
|
|||||||
closeinc(numfile);
|
closeinc(numfile);
|
||||||
closeinc(stdfile);
|
closeinc(stdfile);
|
||||||
closeinc(gasfile);
|
closeinc(gasfile);
|
||||||
|
closeinc(stdffile);
|
||||||
|
closeinc(gasffile);
|
||||||
closeinc(stabfile);
|
closeinc(stabfile);
|
||||||
closeinc(norfile);
|
closeinc(norfile);
|
||||||
closeinc(rnifile);
|
closeinc(rnifile);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user