* 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);
begin
inherited create(op);;
inherited create(op);
init(_size);
end;
constructor taicpu.op_reg(op : tasmop;_size : topsize;_op1 : tregister);
begin
inherited create(op);;
inherited create(op);
init(_size);
ops:=1;
loadreg(0,_op1);
@ -158,7 +158,7 @@ implementation
constructor taicpu.op_const(op : tasmop;_size : topsize;_op1 : longint);
begin
inherited create(op);;
inherited create(op);
init(_size);
ops:=1;
loadconst(0,aword(_op1));
@ -167,7 +167,7 @@ implementation
constructor taicpu.op_ref(op : tasmop;_size : topsize;_op1 : treference);
begin
inherited create(op);;
inherited create(op);
init(_size);
ops:=1;
loadref(0,_op1);
@ -176,7 +176,7 @@ implementation
constructor taicpu.op_reg_reg(op : tasmop;_size : topsize;_op1,_op2 : tregister);
begin
inherited create(op);;
inherited create(op);
init(_size);
ops:=2;
loadreg(0,_op1);
@ -186,7 +186,7 @@ implementation
constructor taicpu.op_reg_const(op:tasmop; _size: topsize; _op1: tregister; _op2: longint);
begin
inherited create(op);;
inherited create(op);
init(_size);
ops:=2;
loadreg(0,_op1);
@ -196,7 +196,7 @@ implementation
constructor taicpu.op_reg_ref(op : tasmop;_size : topsize;_op1 : tregister;_op2 : treference);
begin
inherited create(op);;
inherited create(op);
init(_size);
ops:=2;
loadreg(0,_op1);
@ -206,7 +206,7 @@ implementation
constructor taicpu.op_const_reg(op : tasmop;_size : topsize;_op1 : longint;_op2 : tregister);
begin
inherited create(op);;
inherited create(op);
init(_size);
ops:=2;
loadconst(0,aword(_op1));
@ -216,7 +216,7 @@ implementation
constructor taicpu.op_const_const(op : tasmop;_size : topsize;_op1,_op2 : longint);
begin
inherited create(op);;
inherited create(op);
init(_size);
ops:=2;
loadconst(0,aword(_op1));
@ -226,7 +226,7 @@ implementation
constructor taicpu.op_const_ref(op : tasmop;_size : topsize;_op1 : longint;_op2 : treference);
begin
inherited create(op);;
inherited create(op);
init(_size);
ops:=2;
loadconst(0,aword(_op1));
@ -236,7 +236,7 @@ implementation
constructor taicpu.op_ref_reg(op : tasmop;_size : topsize;_op1 : treference;_op2 : tregister);
begin
inherited create(op);;
inherited create(op);
init(_size);
ops:=2;
loadref(0,_op1);
@ -246,7 +246,7 @@ implementation
constructor taicpu.op_ref_ref(op : tasmop;_size : topsize;_op1,_op2 : treference);
begin
inherited create(op);;
inherited create(op);
init(_size);
ops:=2;
loadref(0,_op1);
@ -256,7 +256,7 @@ implementation
constructor taicpu.op_reg_reg_reg(op : tasmop;_size : topsize;_op1,_op2,_op3 : tregister);
begin
inherited create(op);;
inherited create(op);
init(_size);
ops:=3;
loadreg(0,_op1);
@ -266,7 +266,7 @@ implementation
constructor taicpu.op_const_reg_reg(op : tasmop;_size : topsize;_op1 : longint;_op2 : tregister;_op3 : tregister);
begin
inherited create(op);;
inherited create(op);
init(_size);
ops:=3;
loadconst(0,aword(_op1));
@ -276,7 +276,7 @@ implementation
constructor taicpu.op_reg_reg_ref(op : tasmop;_size : topsize;_op1,_op2 : tregister;_op3 : treference);
begin
inherited create(op);;
inherited create(op);
init(_size);
ops:=3;
loadreg(0,_op1);
@ -287,7 +287,7 @@ implementation
constructor taicpu.op_const_ref_reg(op : tasmop;_size : topsize;_op1 : longint;_op2 : treference;_op3 : tregister);
begin
inherited create(op);;
inherited create(op);
init(_size);
ops:=3;
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);
begin
inherited create(op);;
inherited create(op);
init(_size);
ops:=3;
loadconst(0,aword(_op1));
@ -309,7 +309,7 @@ implementation
constructor taicpu.op_ref_regset(op: tasmop; _size : topsize; _op1: treference;const _op2: tcpuregisterset);
Begin
inherited create(op);;
inherited create(op);
init(_size);
ops:=2;
loadref(0,_op1);
@ -318,7 +318,7 @@ implementation
constructor taicpu.op_regset_ref(op: tasmop; _size : topsize;const _op1: tcpuregisterset; _op2: treference);
Begin
inherited create(op);;
inherited create(op);
init(_size);
ops:=2;
loadregset(0,_op1);
@ -329,7 +329,7 @@ implementation
constructor taicpu.op_reg_regset(op: tasmop; _size : topsize; _op1: tregister;const _op2: tcpuregisterset);
Begin
inherited create(op);;
inherited create(op);
init(_size);
ops:=2;
loadreg(0,_op1);
@ -339,7 +339,7 @@ implementation
constructor taicpu.op_regset_reg(op: tasmop; _size : topsize;const _op1: tcpuregisterset; _op2: tregister);
Begin
inherited create(op);;
inherited create(op);
init(_size);
ops:=2;
loadregset(0,_op1);
@ -349,7 +349,7 @@ implementation
constructor taicpu.op_sym(op : tasmop;_size : topsize;_op1 : tasmsymbol);
begin
inherited create(op);;
inherited create(op);
init(_size);
ops:=1;
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);
begin
inherited create(op);;
inherited create(op);
init(_size);
ops:=2;
if ((op >= A_DBCC) and (op <= A_DBF))
@ -426,7 +426,10 @@ implementation
end.
{
$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
Revision 1.9 2003/06/14 14:53:50 jonas

View File

@ -1100,6 +1100,7 @@ unit cgcpu;
tosave : tcpuregisterset;
ref : treference;
begin
{!!!!!
tosave:=std_saved_registers;
{ 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);
@ -1107,6 +1108,7 @@ unit cgcpu;
ref.direction:=dir_dec;
if tosave<>[] then
list.concat(taicpu.op_regset_ref(A_MOVEM,S_L,tosave,ref));
}
end;
@ -1116,6 +1118,7 @@ unit cgcpu;
r:Tregister;
ref : treference;
begin
{!!!!!!!!
torestore:=std_saved_registers;
{ should be intersected with used regs, no ? }
torestore:=torestore*(rg[R_INTREGISTER].used_in_proc+rg[R_ADDRESSREGISTER].used_in_proc);
@ -1123,6 +1126,7 @@ unit cgcpu;
ref.direction:=dir_inc;
if torestore<>[] then
list.concat(taicpu.op_ref_regset(A_MOVEM,S_L,ref,torestore));
}
end;
@ -1309,7 +1313,10 @@ end.
{
$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
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
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
stdcall and cdecl. The alignment value should be the one defined
by GCC or the target ABI.
@ -513,7 +514,10 @@ implementation
end.
{
$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
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
D6,$01,$06,d6,%d6,6
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
FP1,$02,$01,fp1,%fp1,17
@ -44,9 +36,21 @@ SFC,$05,$06,sfc,%sfc,0
VBR,$05,$07,vbr,%vbr,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$
; 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
;
; 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_D6 = tregister($01000006);
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_FP1 = tregister($02000001);
NR_FP2 = tregister($02000002);
@ -33,3 +25,11 @@ 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_SP = tregister($06000007);

View File

@ -8,14 +8,6 @@
'%d5',
'%d6',
'%d7',
'%a0',
'%a1',
'%a2',
'%a3',
'%a4',
'%a5',
'%a6',
'%sp',
'%fp0',
'%fp1',
'%fp2',
@ -32,4 +24,12 @@
'%dfc',
'%sfc',
'%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 }
9,
10,
11,
12,
13,
14,
15,
26,
27,
28,
29,
30,
31,
32,
18,
1,
2,
3,
@ -15,21 +15,21 @@
6,
7,
8,
30,
17,
18,
22,
9,
10,
11,
12,
13,
14,
15,
16,
19,
25,
17,
23,
33,
20,
21,
22,
23,
24,
27,
33,
25,
31,
16,
28,
29,
32,
0

View File

@ -8,14 +8,6 @@ tregister($01000004),
tregister($01000005),
tregister($01000006),
tregister($01000007),
tregister($01000008),
tregister($01000009),
tregister($0100000a),
tregister($0100000b),
tregister($0100000c),
tregister($0100000d),
tregister($0100000e),
tregister($0100000f),
tregister($02000000),
tregister($02000001),
tregister($02000002),
@ -32,4 +24,12 @@ tregister($05000004),
tregister($05000005),
tregister($05000006),
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 }
0,
9,
10,
11,
12,
13,
14,
15,
26,
27,
28,
29,
30,
31,
32,
18,
1,
2,
3,
@ -16,20 +16,20 @@
6,
7,
8,
30,
17,
18,
22,
9,
10,
11,
12,
13,
14,
15,
16,
19,
25,
17,
23,
33,
20,
21,
22,
23,
24,
27,
33,
25,
31,
16,
28,
29,
32
24

View File

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

View File

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

View File

@ -8,14 +8,6 @@ RS_D4 = $04;
RS_D5 = $05;
RS_D6 = $06;
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_FP1 = $01;
RS_FP2 = $02;
@ -33,3 +25,11 @@ RS_DFC = $05;
RS_SFC = $06;
RS_VBR = $07;
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;