* register numbers for address registers fixed

This commit is contained in:
florian 2004-05-06 22:01:54 +00:00
parent 2f3f32786f
commit 2555cc8496
12 changed files with 147 additions and 129 deletions

View File

@ -142,14 +142,14 @@ implementation
constructor taicpu.op_none(op : tasmop;_size : topsize); constructor taicpu.op_none(op : tasmop;_size : topsize);
begin begin
inherited create(op);; inherited create(op);
init(_size); init(_size);
end; end;
constructor taicpu.op_reg(op : tasmop;_size : topsize;_op1 : tregister); constructor taicpu.op_reg(op : tasmop;_size : topsize;_op1 : tregister);
begin begin
inherited create(op);; inherited create(op);
init(_size); init(_size);
ops:=1; ops:=1;
loadreg(0,_op1); loadreg(0,_op1);
@ -158,7 +158,7 @@ implementation
constructor taicpu.op_const(op : tasmop;_size : topsize;_op1 : longint); constructor taicpu.op_const(op : tasmop;_size : topsize;_op1 : longint);
begin begin
inherited create(op);; inherited create(op);
init(_size); init(_size);
ops:=1; ops:=1;
loadconst(0,aword(_op1)); loadconst(0,aword(_op1));
@ -167,7 +167,7 @@ implementation
constructor taicpu.op_ref(op : tasmop;_size : topsize;_op1 : treference); constructor taicpu.op_ref(op : tasmop;_size : topsize;_op1 : treference);
begin begin
inherited create(op);; inherited create(op);
init(_size); init(_size);
ops:=1; ops:=1;
loadref(0,_op1); loadref(0,_op1);
@ -176,7 +176,7 @@ implementation
constructor taicpu.op_reg_reg(op : tasmop;_size : topsize;_op1,_op2 : tregister); constructor taicpu.op_reg_reg(op : tasmop;_size : topsize;_op1,_op2 : tregister);
begin begin
inherited create(op);; inherited create(op);
init(_size); init(_size);
ops:=2; ops:=2;
loadreg(0,_op1); loadreg(0,_op1);
@ -186,7 +186,7 @@ implementation
constructor taicpu.op_reg_const(op:tasmop; _size: topsize; _op1: tregister; _op2: longint); constructor taicpu.op_reg_const(op:tasmop; _size: topsize; _op1: tregister; _op2: longint);
begin begin
inherited create(op);; inherited create(op);
init(_size); init(_size);
ops:=2; ops:=2;
loadreg(0,_op1); loadreg(0,_op1);
@ -196,7 +196,7 @@ implementation
constructor taicpu.op_reg_ref(op : tasmop;_size : topsize;_op1 : tregister;_op2 : treference); constructor taicpu.op_reg_ref(op : tasmop;_size : topsize;_op1 : tregister;_op2 : treference);
begin begin
inherited create(op);; inherited create(op);
init(_size); init(_size);
ops:=2; ops:=2;
loadreg(0,_op1); loadreg(0,_op1);
@ -206,7 +206,7 @@ implementation
constructor taicpu.op_const_reg(op : tasmop;_size : topsize;_op1 : longint;_op2 : tregister); constructor taicpu.op_const_reg(op : tasmop;_size : topsize;_op1 : longint;_op2 : tregister);
begin begin
inherited create(op);; inherited create(op);
init(_size); init(_size);
ops:=2; ops:=2;
loadconst(0,aword(_op1)); loadconst(0,aword(_op1));
@ -216,7 +216,7 @@ implementation
constructor taicpu.op_const_const(op : tasmop;_size : topsize;_op1,_op2 : longint); constructor taicpu.op_const_const(op : tasmop;_size : topsize;_op1,_op2 : longint);
begin begin
inherited create(op);; inherited create(op);
init(_size); init(_size);
ops:=2; ops:=2;
loadconst(0,aword(_op1)); loadconst(0,aword(_op1));
@ -226,7 +226,7 @@ implementation
constructor taicpu.op_const_ref(op : tasmop;_size : topsize;_op1 : longint;_op2 : treference); constructor taicpu.op_const_ref(op : tasmop;_size : topsize;_op1 : longint;_op2 : treference);
begin begin
inherited create(op);; inherited create(op);
init(_size); init(_size);
ops:=2; ops:=2;
loadconst(0,aword(_op1)); loadconst(0,aword(_op1));
@ -236,7 +236,7 @@ implementation
constructor taicpu.op_ref_reg(op : tasmop;_size : topsize;_op1 : treference;_op2 : tregister); constructor taicpu.op_ref_reg(op : tasmop;_size : topsize;_op1 : treference;_op2 : tregister);
begin begin
inherited create(op);; inherited create(op);
init(_size); init(_size);
ops:=2; ops:=2;
loadref(0,_op1); loadref(0,_op1);
@ -246,7 +246,7 @@ implementation
constructor taicpu.op_ref_ref(op : tasmop;_size : topsize;_op1,_op2 : treference); constructor taicpu.op_ref_ref(op : tasmop;_size : topsize;_op1,_op2 : treference);
begin begin
inherited create(op);; inherited create(op);
init(_size); init(_size);
ops:=2; ops:=2;
loadref(0,_op1); loadref(0,_op1);
@ -256,7 +256,7 @@ implementation
constructor taicpu.op_reg_reg_reg(op : tasmop;_size : topsize;_op1,_op2,_op3 : tregister); constructor taicpu.op_reg_reg_reg(op : tasmop;_size : topsize;_op1,_op2,_op3 : tregister);
begin begin
inherited create(op);; inherited create(op);
init(_size); init(_size);
ops:=3; ops:=3;
loadreg(0,_op1); loadreg(0,_op1);
@ -266,7 +266,7 @@ implementation
constructor taicpu.op_const_reg_reg(op : tasmop;_size : topsize;_op1 : longint;_op2 : tregister;_op3 : tregister); constructor taicpu.op_const_reg_reg(op : tasmop;_size : topsize;_op1 : longint;_op2 : tregister;_op3 : tregister);
begin begin
inherited create(op);; inherited create(op);
init(_size); init(_size);
ops:=3; ops:=3;
loadconst(0,aword(_op1)); loadconst(0,aword(_op1));
@ -276,7 +276,7 @@ implementation
constructor taicpu.op_reg_reg_ref(op : tasmop;_size : topsize;_op1,_op2 : tregister;_op3 : treference); constructor taicpu.op_reg_reg_ref(op : tasmop;_size : topsize;_op1,_op2 : tregister;_op3 : treference);
begin begin
inherited create(op);; inherited create(op);
init(_size); init(_size);
ops:=3; ops:=3;
loadreg(0,_op1); loadreg(0,_op1);
@ -287,7 +287,7 @@ implementation
constructor taicpu.op_const_ref_reg(op : tasmop;_size : topsize;_op1 : longint;_op2 : treference;_op3 : tregister); constructor taicpu.op_const_ref_reg(op : tasmop;_size : topsize;_op1 : longint;_op2 : treference;_op3 : tregister);
begin begin
inherited create(op);; inherited create(op);
init(_size); init(_size);
ops:=3; ops:=3;
loadconst(0,aword(_op1)); loadconst(0,aword(_op1));
@ -298,7 +298,7 @@ implementation
constructor taicpu.op_const_reg_ref(op : tasmop;_size : topsize;_op1 : longint;_op2 : tregister;_op3 : treference); constructor taicpu.op_const_reg_ref(op : tasmop;_size : topsize;_op1 : longint;_op2 : tregister;_op3 : treference);
begin begin
inherited create(op);; inherited create(op);
init(_size); init(_size);
ops:=3; ops:=3;
loadconst(0,aword(_op1)); loadconst(0,aword(_op1));
@ -309,7 +309,7 @@ implementation
constructor taicpu.op_ref_regset(op: tasmop; _size : topsize; _op1: treference;const _op2: tcpuregisterset); constructor taicpu.op_ref_regset(op: tasmop; _size : topsize; _op1: treference;const _op2: tcpuregisterset);
Begin Begin
inherited create(op);; inherited create(op);
init(_size); init(_size);
ops:=2; ops:=2;
loadref(0,_op1); loadref(0,_op1);
@ -318,7 +318,7 @@ implementation
constructor taicpu.op_regset_ref(op: tasmop; _size : topsize;const _op1: tcpuregisterset; _op2: treference); constructor taicpu.op_regset_ref(op: tasmop; _size : topsize;const _op1: tcpuregisterset; _op2: treference);
Begin Begin
inherited create(op);; inherited create(op);
init(_size); init(_size);
ops:=2; ops:=2;
loadregset(0,_op1); loadregset(0,_op1);
@ -329,7 +329,7 @@ implementation
constructor taicpu.op_reg_regset(op: tasmop; _size : topsize; _op1: tregister;const _op2: tcpuregisterset); constructor taicpu.op_reg_regset(op: tasmop; _size : topsize; _op1: tregister;const _op2: tcpuregisterset);
Begin Begin
inherited create(op);; inherited create(op);
init(_size); init(_size);
ops:=2; ops:=2;
loadreg(0,_op1); loadreg(0,_op1);
@ -339,7 +339,7 @@ implementation
constructor taicpu.op_regset_reg(op: tasmop; _size : topsize;const _op1: tcpuregisterset; _op2: tregister); constructor taicpu.op_regset_reg(op: tasmop; _size : topsize;const _op1: tcpuregisterset; _op2: tregister);
Begin Begin
inherited create(op);; inherited create(op);
init(_size); init(_size);
ops:=2; ops:=2;
loadregset(0,_op1); loadregset(0,_op1);
@ -349,7 +349,7 @@ implementation
constructor taicpu.op_sym(op : tasmop;_size : topsize;_op1 : tasmsymbol); constructor taicpu.op_sym(op : tasmop;_size : topsize;_op1 : tasmsymbol);
begin begin
inherited create(op);; inherited create(op);
init(_size); init(_size);
ops:=1; ops:=1;
loadsymbol(0,_op1,0); loadsymbol(0,_op1,0);
@ -386,7 +386,7 @@ implementation
constructor taicpu.op_sym_ofs_reg(op : tasmop;_size : topsize;_op1 : tasmsymbol;_op1ofs:longint;_op2 : tregister); constructor taicpu.op_sym_ofs_reg(op : tasmop;_size : topsize;_op1 : tasmsymbol;_op1ofs:longint;_op2 : tregister);
begin begin
inherited create(op);; inherited create(op);
init(_size); init(_size);
ops:=2; ops:=2;
if ((op >= A_DBCC) and (op <= A_DBF)) if ((op >= A_DBCC) and (op <= A_DBF))
@ -426,7 +426,10 @@ implementation
end. end.
{ {
$Log$ $Log$
Revision 1.10 2004-01-30 12:17:18 florian Revision 1.11 2004-05-06 22:01:54 florian
* register numbers for address registers fixed
Revision 1.10 2004/01/30 12:17:18 florian
* fixed some m68k compilation problems * fixed some m68k compilation problems
Revision 1.9 2003/06/14 14:53:50 jonas Revision 1.9 2003/06/14 14:53:50 jonas

View File

@ -1100,6 +1100,7 @@ unit cgcpu;
tosave : tcpuregisterset; tosave : tcpuregisterset;
ref : treference; ref : treference;
begin begin
{!!!!!
tosave:=std_saved_registers; tosave:=std_saved_registers;
{ only save the registers which are not used and must be saved } { only save the registers which are not used and must be saved }
tosave:=tosave*(rg[R_INTREGISTER].used_in_proc+rg[R_ADDRESSREGISTER].used_in_proc); tosave:=tosave*(rg[R_INTREGISTER].used_in_proc+rg[R_ADDRESSREGISTER].used_in_proc);
@ -1107,6 +1108,7 @@ unit cgcpu;
ref.direction:=dir_dec; ref.direction:=dir_dec;
if tosave<>[] then if tosave<>[] then
list.concat(taicpu.op_regset_ref(A_MOVEM,S_L,tosave,ref)); list.concat(taicpu.op_regset_ref(A_MOVEM,S_L,tosave,ref));
}
end; end;
@ -1116,6 +1118,7 @@ unit cgcpu;
r:Tregister; r:Tregister;
ref : treference; ref : treference;
begin begin
{!!!!!!!!
torestore:=std_saved_registers; torestore:=std_saved_registers;
{ should be intersected with used regs, no ? } { should be intersected with used regs, no ? }
torestore:=torestore*(rg[R_INTREGISTER].used_in_proc+rg[R_ADDRESSREGISTER].used_in_proc); torestore:=torestore*(rg[R_INTREGISTER].used_in_proc+rg[R_ADDRESSREGISTER].used_in_proc);
@ -1123,6 +1126,7 @@ unit cgcpu;
ref.direction:=dir_inc; ref.direction:=dir_inc;
if torestore<>[] then if torestore<>[] then
list.concat(taicpu.op_ref_regset(A_MOVEM,S_L,ref,torestore)); list.concat(taicpu.op_ref_regset(A_MOVEM,S_L,ref,torestore));
}
end; end;
@ -1309,7 +1313,10 @@ end.
{ {
$Log$ $Log$
Revision 1.25 2004-05-06 20:30:51 florian Revision 1.26 2004-05-06 22:01:54 florian
* register numbers for address registers fixed
Revision 1.25 2004/05/06 20:30:51 florian
* m68k compiler compilation fixed * m68k compiler compilation fixed
Revision 1.24 2004/04/19 21:15:12 florian Revision 1.24 2004/04/19 21:15:12 florian

View File

@ -368,7 +368,8 @@ unit cpubase;
This value can be deduced from CALLED_USED_REGISTERS array in the This value can be deduced from CALLED_USED_REGISTERS array in the
GCC source. GCC source.
} }
std_saved_registers = [RS_D2..RS_D7,RS_A2..RS_A5]; std_saved_intregisters = [RS_D2..RS_D7];
std_saved_addrregisters = [RS_A2..RS_A5];
{# Required parameter alignment when calling a routine declared as {# Required parameter alignment when calling a routine declared as
stdcall and cdecl. The alignment value should be the one defined stdcall and cdecl. The alignment value should be the one defined
by GCC or the target ABI. by GCC or the target ABI.
@ -513,7 +514,10 @@ implementation
end. end.
{ {
$Log$ $Log$
Revision 1.27 2004-05-06 20:30:51 florian Revision 1.28 2004-05-06 22:01:54 florian
* register numbers for address registers fixed
Revision 1.27 2004/05/06 20:30:51 florian
* m68k compiler compilation fixed * m68k compiler compilation fixed
Revision 1.26 2004/04/25 21:26:16 florian Revision 1.26 2004/04/25 21:26:16 florian

View File

@ -16,14 +16,6 @@ D4,$01,$04,d4,%d4,4
D5,$01,$05,d5,%d5,5 D5,$01,$05,d5,%d5,5
D6,$01,$06,d6,%d6,6 D6,$01,$06,d6,%d6,6
D7,$01,$07,d7,%d7,7 D7,$01,$07,d7,%d7,7
A0,$01,$08,a0,%a0,8
A1,$01,$09,a1,%a1,9
A2,$01,$0a,a2,%a2,10
A3,$01,$0b,a3,%a3,11
A4,$01,$0c,a4,%a4,12
A5,$01,$0d,a5,%a5,13
A6,$01,$0e,a6,%a6,14
SP,$01,$0f,sp,%sp,15
FP0,$02,$00,fp0,%fp0,16 FP0,$02,$00,fp0,%fp0,16
FP1,$02,$01,fp1,%fp1,17 FP1,$02,$01,fp1,%fp1,17
@ -44,9 +36,21 @@ SFC,$05,$06,sfc,%sfc,0
VBR,$05,$07,vbr,%vbr,0 VBR,$05,$07,vbr,%vbr,0
FPSR,$05,$08,fpsr,%fpsr,0 FPSR,$05,$08,fpsr,%fpsr,0
A0,$06,$00,a0,%a0,8
A1,$06,$01,a1,%a1,9
A2,$06,$02,a2,%a2,10
A3,$06,$03,a3,%a3,11
A4,$06,$04,a4,%a4,12
A5,$06,$05,a5,%a5,13
A6,$06,$06,a6,%a6,14
SP,$06,$07,sp,%sp,15
; ;
; $Log$ ; $Log$
; Revision 1.3 2004-04-26 11:05:28 florian ; Revision 1.4 2004-05-06 22:01:54 florian
; * register numbers for address registers fixed
;
; Revision 1.3 2004/04/26 11:05:28 florian
; + gas registers ; + gas registers
; ;
; Revision 1.2 2004/04/25 21:26:16 florian ; Revision 1.2 2004/04/25 21:26:16 florian

View File

@ -8,14 +8,6 @@ NR_D4 = tregister($01000004);
NR_D5 = tregister($01000005); NR_D5 = tregister($01000005);
NR_D6 = tregister($01000006); NR_D6 = tregister($01000006);
NR_D7 = tregister($01000007); NR_D7 = tregister($01000007);
NR_A0 = tregister($01000008);
NR_A1 = tregister($01000009);
NR_A2 = tregister($0100000a);
NR_A3 = tregister($0100000b);
NR_A4 = tregister($0100000c);
NR_A5 = tregister($0100000d);
NR_A6 = tregister($0100000e);
NR_SP = tregister($0100000f);
NR_FP0 = tregister($02000000); NR_FP0 = tregister($02000000);
NR_FP1 = tregister($02000001); NR_FP1 = tregister($02000001);
NR_FP2 = tregister($02000002); NR_FP2 = tregister($02000002);
@ -33,3 +25,11 @@ 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_A1 = tregister($06000001);
NR_A2 = tregister($06000002);
NR_A3 = tregister($06000003);
NR_A4 = tregister($06000004);
NR_A5 = tregister($06000005);
NR_A6 = tregister($06000006);
NR_SP = tregister($06000007);

View File

@ -8,14 +8,6 @@
'%d5', '%d5',
'%d6', '%d6',
'%d7', '%d7',
'%a0',
'%a1',
'%a2',
'%a3',
'%a4',
'%a5',
'%a6',
'%sp',
'%fp0', '%fp0',
'%fp1', '%fp1',
'%fp2', '%fp2',
@ -32,4 +24,12 @@
'%dfc', '%dfc',
'%sfc', '%sfc',
'%vbr', '%vbr',
'%fpsr' '%fpsr',
'%a0',
'%a1',
'%a2',
'%a3',
'%a4',
'%a5',
'%a6',
'%sp'

View File

@ -1,12 +1,12 @@
{ don't edit, this file is generated from m68kreg.dat } { don't edit, this file is generated from m68kreg.dat }
9,
10,
11,
12,
13,
14,
15,
26, 26,
27,
28,
29,
30,
31,
32,
18,
1, 1,
2, 2,
3, 3,
@ -15,21 +15,21 @@
6, 6,
7, 7,
8, 8,
30, 22,
17, 9,
18, 10,
11,
12,
13,
14,
15,
16,
19, 19,
25,
17,
23,
33,
20, 20,
21, 21,
22,
23,
24, 24,
27,
33,
25,
31,
16,
28,
29,
32,
0 0

View File

@ -8,14 +8,6 @@ tregister($01000004),
tregister($01000005), tregister($01000005),
tregister($01000006), tregister($01000006),
tregister($01000007), tregister($01000007),
tregister($01000008),
tregister($01000009),
tregister($0100000a),
tregister($0100000b),
tregister($0100000c),
tregister($0100000d),
tregister($0100000e),
tregister($0100000f),
tregister($02000000), tregister($02000000),
tregister($02000001), tregister($02000001),
tregister($02000002), tregister($02000002),
@ -32,4 +24,12 @@ tregister($05000004),
tregister($05000005), tregister($05000005),
tregister($05000006), tregister($05000006),
tregister($05000007), tregister($05000007),
tregister($05000008) tregister($05000008),
tregister($06000000),
tregister($06000001),
tregister($06000002),
tregister($06000003),
tregister($06000004),
tregister($06000005),
tregister($06000006),
tregister($06000007)

View File

@ -1,13 +1,13 @@
{ don't edit, this file is generated from m68kreg.dat } { don't edit, this file is generated from m68kreg.dat }
0, 0,
9,
10,
11,
12,
13,
14,
15,
26, 26,
27,
28,
29,
30,
31,
32,
18,
1, 1,
2, 2,
3, 3,
@ -16,20 +16,20 @@
6, 6,
7, 7,
8, 8,
30, 22,
17, 9,
18, 10,
11,
12,
13,
14,
15,
16,
19, 19,
25,
17,
23,
33,
20, 20,
21, 21,
22, 24
23,
24,
27,
33,
25,
31,
16,
28,
29,
32

View File

@ -8,14 +8,6 @@
5, 5,
6, 6,
7, 7,
8,
9,
10,
11,
12,
13,
14,
15,
16, 16,
17, 17,
18, 18,
@ -32,4 +24,12 @@
0, 0,
0, 0,
0, 0,
0 0,
8,
9,
10,
11,
12,
13,
14,
15

View File

@ -8,14 +8,6 @@
'd5', 'd5',
'd6', 'd6',
'd7', 'd7',
'a0',
'a1',
'a2',
'a3',
'a4',
'a5',
'a6',
'sp',
'fp0', 'fp0',
'fp1', 'fp1',
'fp2', 'fp2',
@ -32,4 +24,12 @@
'dfc', 'dfc',
'sfc', 'sfc',
'vbr', 'vbr',
'fpsr' 'fpsr',
'a0',
'a1',
'a2',
'a3',
'a4',
'a5',
'a6',
'sp'

View File

@ -8,14 +8,6 @@ RS_D4 = $04;
RS_D5 = $05; RS_D5 = $05;
RS_D6 = $06; RS_D6 = $06;
RS_D7 = $07; RS_D7 = $07;
RS_A0 = $08;
RS_A1 = $09;
RS_A2 = $0a;
RS_A3 = $0b;
RS_A4 = $0c;
RS_A5 = $0d;
RS_A6 = $0e;
RS_SP = $0f;
RS_FP0 = $00; RS_FP0 = $00;
RS_FP1 = $01; RS_FP1 = $01;
RS_FP2 = $02; RS_FP2 = $02;
@ -33,3 +25,11 @@ RS_DFC = $05;
RS_SFC = $06; RS_SFC = $06;
RS_VBR = $07; RS_VBR = $07;
RS_FPSR = $08; RS_FPSR = $08;
RS_A0 = $00;
RS_A1 = $01;
RS_A2 = $02;
RS_A3 = $03;
RS_A4 = $04;
RS_A5 = $05;
RS_A6 = $06;
RS_SP = $07;