mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-13 05:29:34 +02:00
* keep the names of X, Y and Z in assembler files, fixes issue #32150
git-svn-id: trunk@36776 -
This commit is contained in:
parent
8c33fbbe64
commit
a2e442e111
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -15634,6 +15634,7 @@ tests/webtbs/tw32111.pp svneol=native#text/pascal
|
||||
tests/webtbs/tw32118.pp svneol=native#text/pascal
|
||||
tests/webtbs/tw3212.pp svneol=native#text/plain
|
||||
tests/webtbs/tw3214.pp svneol=native#text/plain
|
||||
tests/webtbs/tw32150.pp svneol=native#text/pascal
|
||||
tests/webtbs/tw3216.pp svneol=native#text/plain
|
||||
tests/webtbs/tw3217.pp svneol=native#text/plain
|
||||
tests/webtbs/tw3222.pp svneol=native#text/plain
|
||||
|
@ -2,43 +2,47 @@
|
||||
; AVR registers
|
||||
;
|
||||
; layout
|
||||
; <name>,<type>,<value>,<stdname>,<stab idx>,<dwarf idx>
|
||||
; <name>,<type>,<subreg>,<value>,<stdname>,<stab idx>,<dwarf idx>
|
||||
;
|
||||
NO,$00,$00,INVALID,-1,-1
|
||||
NO,$00,$00,$00,INVALID,-1,-1
|
||||
|
||||
R0,$01,$00,r0,0,0
|
||||
R1,$01,$01,r1,1,1
|
||||
R2,$01,$02,r2,2,2
|
||||
R3,$01,$03,r3,3,3
|
||||
R4,$01,$04,r4,4,4
|
||||
R5,$01,$05,r5,5,5
|
||||
R6,$01,$06,r6,6,6
|
||||
R7,$01,$07,r7,7,7
|
||||
R8,$01,$08,r8,8,8
|
||||
R9,$01,$09,r9,9,9
|
||||
R10,$01,$0a,r10,10,10
|
||||
R11,$01,$0b,r11,11,11
|
||||
R12,$01,$0c,r12,12,12
|
||||
R13,$01,$0d,r13,13,13
|
||||
R14,$01,$0e,r14,14,14
|
||||
R15,$01,$0f,r15,15,15
|
||||
R16,$01,$10,r16,16,16
|
||||
R17,$01,$11,r17,17,17
|
||||
R18,$01,$12,r18,18,18
|
||||
R19,$01,$13,r19,19,19
|
||||
R20,$01,$14,r20,20,20
|
||||
R21,$01,$15,r21,21,21
|
||||
R22,$01,$16,r22,22,22
|
||||
R23,$01,$17,r23,23,23
|
||||
R24,$01,$18,r24,24,24
|
||||
R25,$01,$19,r25,25,25
|
||||
R26,$01,$1a,r26,26,26
|
||||
R27,$01,$1b,r27,27,27
|
||||
R28,$01,$1c,r28,28,28
|
||||
R29,$01,$1d,r29,29,29
|
||||
R30,$01,$1e,r30,30,30
|
||||
R31,$01,$1f,r31,31,31
|
||||
R0,$01,$00,$00,r0,0,0
|
||||
R1,$01,$00,$01,r1,1,1
|
||||
R2,$01,$00,$02,r2,2,2
|
||||
R3,$01,$00,$03,r3,3,3
|
||||
R4,$01,$00,$04,r4,4,4
|
||||
R5,$01,$00,$05,r5,5,5
|
||||
R6,$01,$00,$06,r6,6,6
|
||||
R7,$01,$00,$07,r7,7,7
|
||||
R8,$01,$00,$08,r8,8,8
|
||||
R9,$01,$00,$09,r9,9,9
|
||||
R10,$01,$00,$0a,r10,10,10
|
||||
R11,$01,$00,$0b,r11,11,11
|
||||
R12,$01,$00,$0c,r12,12,12
|
||||
R13,$01,$00,$0d,r13,13,13
|
||||
R14,$01,$00,$0e,r14,14,14
|
||||
R15,$01,$00,$0f,r15,15,15
|
||||
R16,$01,$00,$10,r16,16,16
|
||||
R17,$01,$00,$11,r17,17,17
|
||||
R18,$01,$00,$12,r18,18,18
|
||||
R19,$01,$00,$13,r19,19,19
|
||||
R20,$01,$00,$14,r20,20,20
|
||||
R21,$01,$00,$15,r21,21,21
|
||||
R22,$01,$00,$16,r22,22,22
|
||||
R23,$01,$00,$17,r23,23,23
|
||||
R24,$01,$00,$18,r24,24,24
|
||||
R25,$01,$00,$19,r25,25,25
|
||||
R26,$01,$00,$1a,r26,26,26
|
||||
R27,$01,$00,$1b,r27,27,27
|
||||
R28,$01,$00,$1c,r28,28,28
|
||||
R29,$01,$00,$1d,r29,29,29
|
||||
R30,$01,$00,$1e,r30,30,30
|
||||
R31,$01,$00,$1f,r31,31,31
|
||||
|
||||
SREG,$05,$00,sreg,0,0
|
||||
X,$01,$03,$1a,x,26,26
|
||||
Y,$01,$03,$1c,y,28,28
|
||||
Z,$01,$03,$1e,z,30,30
|
||||
|
||||
SREG,$05,$00,$00,sreg,0,0
|
||||
|
||||
|
||||
|
@ -71,14 +71,11 @@ Unit raavrgas;
|
||||
end;
|
||||
|
||||
const
|
||||
extraregs : array[0..8] of treg2str = (
|
||||
(name: 'X'; reg : NR_R26),
|
||||
extraregs : array[0..5] of treg2str = (
|
||||
(name: 'XL'; reg : NR_R26),
|
||||
(name: 'XH'; reg : NR_R27),
|
||||
(name: 'Y'; reg : NR_R28),
|
||||
(name: 'YL'; reg : NR_R28),
|
||||
(name: 'YH'; reg : NR_R29),
|
||||
(name: 'Z'; reg : NR_R30),
|
||||
(name: 'ZL'; reg : NR_R30),
|
||||
(name: 'ZH'; reg : NR_R31)
|
||||
);
|
||||
|
@ -32,4 +32,7 @@ NR_R28 = tregister($0100001c);
|
||||
NR_R29 = tregister($0100001d);
|
||||
NR_R30 = tregister($0100001e);
|
||||
NR_R31 = tregister($0100001f);
|
||||
NR_X = tregister($0103001a);
|
||||
NR_Y = tregister($0103001c);
|
||||
NR_Z = tregister($0103001e);
|
||||
NR_SREG = tregister($05000000);
|
||||
|
@ -32,4 +32,7 @@
|
||||
29,
|
||||
30,
|
||||
31,
|
||||
26,
|
||||
28,
|
||||
30,
|
||||
0
|
||||
|
@ -1,2 +1,2 @@
|
||||
{ don't edit, this file is generated from avrreg.dat }
|
||||
34
|
||||
37
|
||||
|
@ -32,4 +32,7 @@ tregister($0100001c),
|
||||
tregister($0100001d),
|
||||
tregister($0100001e),
|
||||
tregister($0100001f),
|
||||
tregister($0103001a),
|
||||
tregister($0103001c),
|
||||
tregister($0103001e),
|
||||
tregister($05000000)
|
||||
|
@ -32,4 +32,7 @@
|
||||
30,
|
||||
31,
|
||||
32,
|
||||
33
|
||||
33,
|
||||
34,
|
||||
35,
|
||||
36
|
||||
|
@ -32,4 +32,7 @@
|
||||
8,
|
||||
9,
|
||||
10,
|
||||
33
|
||||
36,
|
||||
33,
|
||||
34,
|
||||
35
|
||||
|
@ -32,4 +32,7 @@
|
||||
29,
|
||||
30,
|
||||
31,
|
||||
26,
|
||||
28,
|
||||
30,
|
||||
0
|
||||
|
@ -32,4 +32,7 @@
|
||||
'r29',
|
||||
'r30',
|
||||
'r31',
|
||||
'x',
|
||||
'y',
|
||||
'z',
|
||||
'sreg'
|
||||
|
@ -32,4 +32,7 @@ RS_R28 = $1c;
|
||||
RS_R29 = $1d;
|
||||
RS_R30 = $1e;
|
||||
RS_R31 = $1f;
|
||||
RS_X = $1a;
|
||||
RS_Y = $1c;
|
||||
RS_Z = $1e;
|
||||
RS_SREG = $00;
|
||||
|
@ -13,7 +13,7 @@
|
||||
|
||||
**********************************************************************}
|
||||
{$mode objfpc}
|
||||
program mkspreg;
|
||||
program mkavrreg;
|
||||
|
||||
const Version = '1.00';
|
||||
max_regcount = 200;
|
||||
@ -26,6 +26,7 @@ var s : string;
|
||||
names,
|
||||
regtypes,
|
||||
supregs,
|
||||
subregs,
|
||||
numbers,
|
||||
stdnames,
|
||||
stabs,dwarf : array[0..max_regcount-1] of string[63];
|
||||
@ -170,6 +171,8 @@ begin
|
||||
readcomma;
|
||||
regtypes[regcount]:=readstr;
|
||||
readcomma;
|
||||
subregs[regcount]:=readstr;
|
||||
readcomma;
|
||||
supregs[regcount]:=readstr;
|
||||
readcomma;
|
||||
stdnames[regcount]:=readstr;
|
||||
@ -184,7 +187,7 @@ begin
|
||||
writeln('Line: "',s,'"');
|
||||
halt(1);
|
||||
end;
|
||||
numbers[regcount]:=regtypes[regcount]+'0000'+copy(supregs[regcount],2,255);
|
||||
numbers[regcount]:=regtypes[regcount]+copy(subregs[regcount],2,255)+'00'+copy(supregs[regcount],2,255);
|
||||
if i<length(s) then
|
||||
begin
|
||||
writeln('Extra chars at end of line, at line ',line);
|
||||
|
16
tests/webtbs/tw32150.pp
Normal file
16
tests/webtbs/tw32150.pp
Normal file
@ -0,0 +1,16 @@
|
||||
{ %CPU=avr }
|
||||
{$mode objfpc}
|
||||
program intmathtest;
|
||||
|
||||
// Pointer to caller supplied variable in R24:R25
|
||||
procedure test(out x: byte); assembler; nostackframe;
|
||||
asm
|
||||
movw R30, R24
|
||||
st Z, R1
|
||||
end;
|
||||
|
||||
var a8: byte;
|
||||
|
||||
begin
|
||||
test(a8);
|
||||
end.
|
Loading…
Reference in New Issue
Block a user