New files for testing gasp.

This commit is contained in:
Steve Chamberlain 1994-01-31 16:53:03 +00:00
parent a5a4b5acdc
commit 3981bad3ee
67 changed files with 14806 additions and 0 deletions

View File

@ -0,0 +1,3 @@
FILE 1 FIRST LINE
.INCLUDE "INC2.H"
FILE 1 LAST LINE

View File

@ -0,0 +1,2 @@
FILE 2 FIRST LINE
FILE 2 LAST LINE

View File

@ -0,0 +1,13 @@
foo: .ASSIGNC "hello"
BAR: .ASSIGNA 12+34
\&foo'foo
\&foo\&foo\&foo
\&foo \&foo \&foo
\&BAR\&bar\&BAR
.END

View File

@ -0,0 +1,25 @@
******** assign.amp
!
!foo: .ASSIGNC "hello"
!BAR: .ASSIGNA 12+34
!
! \&foo'foo
hellofoo
! \&foo\&foo\&foo
hellohellohello
! \&foo \&foo \&foo
hello hello hello
! \&BAR\&bar\&BAR
4646
!
!
!
!
! .END
assign.amp:8 Can't find preprocessor variable bar.

View File

@ -0,0 +1,25 @@
******** assign.amp
!
!foo: .ASSIGNC "hello"
!BAR: .ASSIGNA 12+34
!
! \&foo'foo
hellofoo
! \&foo\&foo\&foo
hellohellohello
! \&foo \&foo \&foo
hello hello hello
! \&BAR\&bar\&BAR
4646
!
!
!
!
! .END
assign.amp:8 Can't find preprocessor variable bar.

View File

@ -0,0 +1,129 @@
.AIF 1 EQ 1
OK
.AELSE
BAD
.AENDI
.AIF 1 EQ 2
BAD
.AELSE
OK
.AENDI
.AIF 1 EQ 2
BAD
.AELSE
OK
.AIF 1 EQ 2
BAD
.AELSE
OK
.AENDI
.AENDI
.AIF 1 LT 2
OK
.AENDI
.AIF 1 EQ 2
BAD
.AENDI
.AIF 1 NE 2
OK
.AENDI
.AIF 1 LE 2
OK
.AENDI
.AIF 1 GT 2
BAD
.AENDI
.AIF 3 GE 2
OK
.AENDI
.AIF 3 LT 2
BAD
.AENDI
.AIF 3 EQ 2
BAD
.AENDI
.AIF 3 NE 2
OK
.AENDI
.AIF 3 LE 2
BAD
.AENDI
.AIF 3 GT 2
OK
.AENDI
.AIF 3 GE 2
OK
.AENDI
.AIF "FOO" EQ "BAR"
BAD
.AENDI
.AIF "FOO" EQ "FOO"
OK
.AENDI
.AIF "FOO" NE "BAR"
OK
.AENDI
.AIF "FOO" EQ "FOO"
OK
.AENDI
.AIF 1 EQ 1
.AIF 1 EQ 1
OK
.AELSE
BAD
.AENDI
.AIF 1 EQ 0
BAD
.AELSE
OK
.AENDI
OK
.AELSE
BAD
.AENDI
.AIF 1 EQ 0
BAD
.AELSE
OK
.AENDI
.AIF 1 EQ 1
OK
.AELSE
BAD
.AENDI
.AIF 1 EQ 0
BAD
.AELSE
.AIF 1 EQ 1
OK
.AELSE
BAD
.AENDI
.AIF 1 EQ 0
BAD
.AELSE
OK
.AENDI
OK
.AENDI
.AIF 1 EQ 1
OK
.AIF 1 EQ 1
OK
.AELSE
BAD
.AENDI
.AIF 1 EQ 0
BAD
.AELSE
OK
.AENDI
.AELSE
BAD
.AENDI
.AIF 1 EQ 0
BAD
.AELSE
OK
.AENDI
.END

View File

@ -0,0 +1,155 @@
******** condass.amp
! .AIF 1 EQ 1
! OK
OK
! .AELSE
! BAD
! .AENDI
! .AIF 1 EQ 2
! BAD
! .AELSE
! OK
OK
! .AENDI
! .AIF 1 EQ 2
! BAD
! .AELSE
! OK
OK
! .AIF 1 EQ 2
! BAD
! .AELSE
! OK
OK
! .AENDI
! .AENDI
! .AIF 1 LT 2
! OK
OK
! .AENDI
! .AIF 1 EQ 2
! BAD
! .AENDI
! .AIF 1 NE 2
! OK
OK
! .AENDI
! .AIF 1 LE 2
! OK
OK
! .AENDI
! .AIF 1 GT 2
! BAD
! .AENDI
! .AIF 3 GE 2
! OK
OK
! .AENDI
! .AIF 3 LT 2
! BAD
! .AENDI
! .AIF 3 EQ 2
! BAD
! .AENDI
! .AIF 3 NE 2
! OK
OK
! .AENDI
! .AIF 3 LE 2
! BAD
! .AENDI
! .AIF 3 GT 2
! OK
OK
! .AENDI
! .AIF 3 GE 2
! OK
OK
! .AENDI
! .AIF "FOO" EQ "BAR"
! BAD
! .AENDI
! .AIF "FOO" EQ "FOO"
! OK
OK
! .AENDI
! .AIF "FOO" NE "BAR"
! OK
! .AENDI
! .AIF "FOO" EQ "FOO"
! OK
OK
! .AENDI
! .AIF 1 EQ 1
! .AIF 1 EQ 1
! OK
OK
! .AELSE
! BAD
! .AENDI
! .AIF 1 EQ 0
! BAD
! .AELSE
! OK
OK
! .AENDI
! OK
OK
! .AELSE
! BAD
! .AENDI
! .AIF 1 EQ 0
! BAD
! .AELSE
! OK
OK
! .AENDI
! .AIF 1 EQ 1
! OK
OK
! .AELSE
! BAD
! .AENDI
! .AIF 1 EQ 0
! BAD
! .AELSE
! .AIF 1 EQ 1
! OK
OK
! .AELSE
! BAD
! .AENDI
! .AIF 1 EQ 0
! BAD
! .AELSE
! OK
OK
! .AENDI
! OK
OK
! .AENDI
! .AIF 1 EQ 1
! OK
OK
! .AIF 1 EQ 1
! OK
OK
! .AELSE
! BAD
! .AENDI
! .AIF 1 EQ 0
! BAD
! .AELSE
! OK
OK
! .AENDI
! .AELSE
! BAD
! .AENDI
! .AIF 1 EQ 0
! BAD
! .AELSE
! OK
OK
! .AENDI
! .END

View File

@ -0,0 +1,155 @@
******** condass.amp
! .AIF 1 EQ 1
! OK
OK
! .AELSE
! BAD
! .AENDI
! .AIF 1 EQ 2
! BAD
! .AELSE
! OK
OK
! .AENDI
! .AIF 1 EQ 2
! BAD
! .AELSE
! OK
OK
! .AIF 1 EQ 2
! BAD
! .AELSE
! OK
OK
! .AENDI
! .AENDI
! .AIF 1 LT 2
! OK
OK
! .AENDI
! .AIF 1 EQ 2
! BAD
! .AENDI
! .AIF 1 NE 2
! OK
OK
! .AENDI
! .AIF 1 LE 2
! OK
OK
! .AENDI
! .AIF 1 GT 2
! BAD
! .AENDI
! .AIF 3 GE 2
! OK
OK
! .AENDI
! .AIF 3 LT 2
! BAD
! .AENDI
! .AIF 3 EQ 2
! BAD
! .AENDI
! .AIF 3 NE 2
! OK
OK
! .AENDI
! .AIF 3 LE 2
! BAD
! .AENDI
! .AIF 3 GT 2
! OK
OK
! .AENDI
! .AIF 3 GE 2
! OK
OK
! .AENDI
! .AIF "FOO" EQ "BAR"
! BAD
! .AENDI
! .AIF "FOO" EQ "FOO"
! OK
OK
! .AENDI
! .AIF "FOO" NE "BAR"
! OK
! .AENDI
! .AIF "FOO" EQ "FOO"
! OK
OK
! .AENDI
! .AIF 1 EQ 1
! .AIF 1 EQ 1
! OK
OK
! .AELSE
! BAD
! .AENDI
! .AIF 1 EQ 0
! BAD
! .AELSE
! OK
OK
! .AENDI
! OK
OK
! .AELSE
! BAD
! .AENDI
! .AIF 1 EQ 0
! BAD
! .AELSE
! OK
OK
! .AENDI
! .AIF 1 EQ 1
! OK
OK
! .AELSE
! BAD
! .AENDI
! .AIF 1 EQ 0
! BAD
! .AELSE
! .AIF 1 EQ 1
! OK
OK
! .AELSE
! BAD
! .AENDI
! .AIF 1 EQ 0
! BAD
! .AELSE
! OK
OK
! .AENDI
! OK
OK
! .AENDI
! .AIF 1 EQ 1
! OK
OK
! .AIF 1 EQ 1
! OK
OK
! .AELSE
! BAD
! .AENDI
! .AIF 1 EQ 0
! BAD
! .AELSE
! OK
OK
! .AENDI
! .AELSE
! BAD
! .AENDI
! .AIF 1 EQ 0
! BAD
! .AELSE
! OK
OK
! .AENDI
! .END

View File

@ -0,0 +1,22 @@
Stuff to try and crash it
foo: .MACRO
HI
bar: .MACRO
THERE
bar
.ENDM
.ENDM
foo
foo
foo
foo
foo
bar

3061
gas/testsuite/gasp/crash.is Normal file

File diff suppressed because it is too large Load Diff

3061
gas/testsuite/gasp/crash.was Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,13 @@
.MACRO foo a b c=a
\a \b \c \d
.ENDM
foo 1 2
foo 1 2 3 4
foo 1
foo
.END

View File

@ -0,0 +1,26 @@
******** crash1.amp
!
!
! .MACRO foo a b c=a
! \a \b \c \d
! .ENDM
!
! foo 1 2
! 1 2 a \d
1 2 a \d
! foo 1 2 3 4
! foo 1
! 1 a \d
1 a \d
! foo
! a \d
a \d
!
!
! .END
crash1.amp:8 Too many positional arguments.

View File

@ -0,0 +1,26 @@
******** crash1.amp
!
!
! .MACRO foo a b c=a
! \a \b \c \d
! .ENDM
!
! foo 1 2
! 1 2 a \d
1 2 a \d
! foo 1 2 3 4
! foo 1
! 1 a \d
1 a \d
! foo
! a \d
a \d
!
!
! .END
crash1.amp:8 Too many positional arguments.

View File

@ -0,0 +1,41 @@
foo: .ASSIGNA 1
\&foo+1
\&foo+1
foo: .ASSIGNC "foo"
\&foo+1
\&foo+1
foo: .ASSIGNA 1
\&foo+1
\&foo+1
foo: .ASSIGNC "foo"
\&foo+1
\&foo+1
foo: .ASSIGNA 1
\&foo+1
\&foo+1
foo: .ASSIGNC "foo"
\&foo+1
\&foo+1
foo: .ASSIGNA 1
\&foo+1
\&foo+1
foo: .ASSIGNC "foo"
\&foo+1
\&foo+1
foo: .ASSIGNA 1
\&foo+1
\&foo+1
foo: .ASSIGNC "foo"
\&foo+1
\&foo+1
foo
foo foo
foo foo
foo
.END

View File

@ -0,0 +1,23 @@
foo .DATA 1,2,3
bar .DATA 1,2,3,4,5 ,6
.DATA.B 12345,12,2
.DATA.W 9,2,12,3,13+41,foo+9
.DATA.L 2~99
.DATAB 1,2,3
.DATAB 1,2,3
.DATAB 1,9+32
.DATAB.L 1,H'11111111
.DATAB.W 2,H'2222
.DATAB.B 3,H'333
.END

View File

@ -0,0 +1,46 @@
******** data.amp
!
!foo .DATA 1,2,3
foo: .long 1,2,3
!bar .DATA 1,2,3,4,5 ,6
bar: .long 1,2,3,4,5,6
! .DATA.B 12345,12,2
.byte 12345,12,2
! .DATA.W 9,2,12,3,13+41,foo+9
.short 9,2,12,3,54,foo+9
! .DATA.L 2~99
.long 97
!
!
!
! .DATAB 1,2,3
.fill 1,4,2
! .DATAB 1,2,3
.fill 1,4,2
!
!
!
!
! .DATAB 1,9+32
.fill 1,4,41
!
! .DATAB.L 1,H'11111111
.fill 1,4,286331153
! .DATAB.W 2,H'2222
.fill 2,2,8738
! .DATAB.B 3,H'333
.fill 3,1,819
!
!
! .END

View File

@ -0,0 +1,46 @@
******** data.amp
!
!foo .DATA 1,2,3
foo: .long 1,2,3
!bar .DATA 1,2,3,4,5 ,6
bar: .long 1,2,3,4,5,6
! .DATA.B 12345,12,2
.byte 12345,12,2
! .DATA.W 9,2,12,3,13+41,foo+9
.short 9,2,12,3,54,foo+9
! .DATA.L 2~99
.long 97
!
!
!
! .DATAB 1,2,3
.fill 1,4,2
! .DATAB 1,2,3
.fill 1,4,2
!
!
!
!
! .DATAB 1,9+32
.fill 1,4,41
!
! .DATAB.L 1,H'11111111
.fill 1,4,286331153
! .DATAB.W 2,H'2222
.fill 2,2,8738
! .DATAB.B 3,H'333
.fill 3,1,819
!
!
! .END

View File

@ -0,0 +1,80 @@
; test all ops
a1 .EQU 4+10
a2 .EQU 4-10
a3 .EQU 4&10
a4 .EQU 4|2
a5 .EQU 4~2
a6 .EQU 4*10
a7 .EQU 40/10
a8 .EQU +7
a9 .EQU -7
a10 .EQU ~7
a1 a2 a3 a4 a5 a6 a7 a8 a9 a10
; test the priorities
b1 .EQU 1|2~3&4+5-8*7/2
b2 .EQU (1|2~(3&(4+5-(8*(7/2)))))
b3 .EQU 10*2/3*4
b4 .EQU (((10*2)/3)*4)
b5 .EQU 10+2-3+4
b6 .EQU (((10+2)-3)+4)
b1 b2 b3 b4
; test association
c1 .EQU -~3
c2 .EQU ~-3
c3 .EQU -(~3)
c4 .EQU ~(-3)
c1 c2 c3 c4
; test rules for symbols
ok1 .EQU FOO
ok2 .EQU FOO+10
ok3 .EQU 10+FOO
ok4 .EQU FOO-10
ok1
ok2
ok3
ok4
ok5 .EQU FOO+3+4+5+6
ok6 .EQU FOO-BAR
ok5
ok6
bad1 .EQU FOO+FOO
bad2 .EQU FOO*2
bad3 .EQU FOO/2
bad4 .EQU FOO|2
bad5 .EQU FOO&2
bad6 .EQU FOO~2
bad7 .EQU FOO*2
; test spacing
space1 .EQU 1 + 2 +3+FOO + 3
space2
; from the SH manual
.DATA.L 1+(2-(3+(4-5))),1
.DATA.L -H'fffffff1+H'000000f0*H'00000010|H'000000f0&H'0000ffff,H'00000fff
.DATA.L -~-~H'0000000f,H'00
.END

133
gas/testsuite/gasp/exp.is Normal file
View File

@ -0,0 +1,133 @@
******** exp.amp
!
!; test all ops
; test all ops
!
!a1 .EQU 4+10
!a2 .EQU 4-10
!a3 .EQU 4&10
!a4 .EQU 4|2
!a5 .EQU 4~2
!a6 .EQU 4*10
!a7 .EQU 40/10
!a8 .EQU +7
!a9 .EQU -7
!a10 .EQU ~7
!
!
! a1 a2 a3 a4 a5 a6 a7 a8 a9 a10
14 -6 0 6 6 40 4 7 -7 -8
!
!; test the priorities
; test the priorities
!
!b1 .EQU 1|2~3&4+5-8*7/2
!b2 .EQU (1|2~(3&(4+5-(8*(7/2)))))
!b3 .EQU 10*2/3*4
!b4 .EQU (((10*2)/3)*4)
!b5 .EQU 10+2-3+4
!b6 .EQU (((10+2)-3)+4)
!
! b1 b2 b3 b4
2 2 24 24
!
!; test association
; test association
!
!c1 .EQU -~3
!c2 .EQU ~-3
!c3 .EQU -(~3)
!c4 .EQU ~(-3)
!
! c1 c2 c3 c4
4 2 4 2
!
!; test rules for symbols
; test rules for symbols
!
!ok1 .EQU FOO
!ok2 .EQU FOO+10
!ok3 .EQU 10+FOO
!ok4 .EQU FOO-10
!
! ok1
FOO
! ok2
FOO+10
! ok3
FOO+10
! ok4
FOO+-10
!
!ok5 .EQU FOO+3+4+5+6
!ok6 .EQU FOO-BAR
!
! ok5
FOO+18
! ok6
FOO-FOO
!
!bad1 .EQU FOO+FOO
!bad2 .EQU FOO*2
!bad3 .EQU FOO/2
!bad4 .EQU FOO|2
!bad5 .EQU FOO&2
!bad6 .EQU FOO~2
!bad7 .EQU FOO*2
!
!; test spacing
; test spacing
!
!space1 .EQU 1 + 2 +3+FOO + 3
!space2
space2:
!
!; from the SH manual
; from the SH manual
!
! .DATA.L 1+(2-(3+(4-5))),1
.long 1,1
!
! .DATA.L -H'fffffff1+H'000000f0*H'00000010|H'000000f0&H'0000ffff,H'00000fff
.long 4095,4095
!
! .DATA.L -~-~H'0000000f,H'00
.long 17,0
!
!
!
!
! .END
exp.amp:56 can't add two relocatable expressions
exp.amp:57 the * operator cannot take non-absolute arguments.
exp.amp:58 the / operator cannot take non-absolute arguments.
exp.amp:59 the | operator cannot take non-absolute arguments.
exp.amp:60 the & operator cannot take non-absolute arguments.
exp.amp:61 the ~ operator cannot take non-absolute arguments.
exp.amp:62 the * operator cannot take non-absolute arguments.

133
gas/testsuite/gasp/exp.was Normal file
View File

@ -0,0 +1,133 @@
******** exp.amp
!
!; test all ops
; test all ops
!
!a1 .EQU 4+10
!a2 .EQU 4-10
!a3 .EQU 4&10
!a4 .EQU 4|2
!a5 .EQU 4~2
!a6 .EQU 4*10
!a7 .EQU 40/10
!a8 .EQU +7
!a9 .EQU -7
!a10 .EQU ~7
!
!
! a1 a2 a3 a4 a5 a6 a7 a8 a9 a10
14 -6 0 6 6 40 4 7 -7 -8
!
!; test the priorities
; test the priorities
!
!b1 .EQU 1|2~3&4+5-8*7/2
!b2 .EQU (1|2~(3&(4+5-(8*(7/2)))))
!b3 .EQU 10*2/3*4
!b4 .EQU (((10*2)/3)*4)
!b5 .EQU 10+2-3+4
!b6 .EQU (((10+2)-3)+4)
!
! b1 b2 b3 b4
2 2 24 24
!
!; test association
; test association
!
!c1 .EQU -~3
!c2 .EQU ~-3
!c3 .EQU -(~3)
!c4 .EQU ~(-3)
!
! c1 c2 c3 c4
4 2 4 2
!
!; test rules for symbols
; test rules for symbols
!
!ok1 .EQU FOO
!ok2 .EQU FOO+10
!ok3 .EQU 10+FOO
!ok4 .EQU FOO-10
!
! ok1
FOO
! ok2
FOO+10
! ok3
FOO+10
! ok4
FOO+-10
!
!ok5 .EQU FOO+3+4+5+6
!ok6 .EQU FOO-BAR
!
! ok5
FOO+18
! ok6
FOO-FOO
!
!bad1 .EQU FOO+FOO
!bad2 .EQU FOO*2
!bad3 .EQU FOO/2
!bad4 .EQU FOO|2
!bad5 .EQU FOO&2
!bad6 .EQU FOO~2
!bad7 .EQU FOO*2
!
!; test spacing
; test spacing
!
!space1 .EQU 1 + 2 +3+FOO + 3
!space2
space2:
!
!; from the SH manual
; from the SH manual
!
! .DATA.L 1+(2-(3+(4-5))),1
.long 1,1
!
! .DATA.L -H'fffffff1+H'000000f0*H'00000010|H'000000f0&H'0000ffff,H'00000fff
.long 4095,4095
!
! .DATA.L -~-~H'0000000f,H'00
.long 17,0
!
!
!
!
! .END
exp.amp:56 can't add two relocatable expressions
exp.amp:57 the * operator cannot take non-absolute arguments.
exp.amp:58 the / operator cannot take non-absolute arguments.
exp.amp:59 the | operator cannot take non-absolute arguments.
exp.amp:60 the & operator cannot take non-absolute arguments.
exp.amp:61 the ~ operator cannot take non-absolute arguments.
exp.amp:62 the * operator cannot take non-absolute arguments.

View File

@ -0,0 +1,4 @@
HI
.INCLUDE "INC1.H"
THERE
.END

View File

@ -0,0 +1,16 @@
******** include.amp
! HI
HI
! .INCLUDE "INC1.H"
!FILE 1 FIRST LINE
FILE: 1 FIRST LINE
! .INCLUDE "INC2.H"
! FILE 2 FIRST LINE
FILE 2 FIRST LINE
! FILE 2 LAST LINE
FILE 2 LAST LINE
!FILE 1 LAST LINE
FILE: 1 LAST LINE
! THERE
THERE
! .END

View File

@ -0,0 +1,16 @@
******** include.amp
! HI
HI
! .INCLUDE "INC1.H"
!FILE 1 FIRST LINE
FILE: 1 FIRST LINE
! .INCLUDE "INC2.H"
! FILE 2 FIRST LINE
FILE 2 FIRST LINE
! FILE 2 LAST LINE
FILE 2 LAST LINE
!FILE 1 LAST LINE
FILE: 1 LAST LINE
! THERE
THERE
! .END

View File

@ -0,0 +1,15 @@
.HEADING " ""QUOTE"" "
.PAGE
.PRINT LIST
foo
.PRINT NOLIST
foo
.FORM LIN=12
.FORM COL=90
.FORM LIN=123 COL=23
.END

View File

@ -0,0 +1,32 @@
******** listing.amp
!
!
! .HEADING " ""QUOTE"" "
.title " "QUOTE" "
! .PAGE
.eject
! .PRINT LIST
.list
! foo
foo
! .PRINT NOLIST
.nolist
! foo
foo
!
!
! .FORM LIN=12
.psize 12,132
! .FORM COL=90
.psize 60,90
! .FORM LIN=123 COL=23
.psize 123,23
!
! .END
end of file not at start of line.
.END missing from end of file.

View File

@ -0,0 +1,32 @@
******** listing.amp
!
!
! .HEADING " ""QUOTE"" "
.title " "QUOTE" "
! .PAGE
.eject
! .PRINT LIST
.list
! foo
foo
! .PRINT NOLIST
.nolist
! foo
foo
!
!
! .FORM LIN=12
.psize 12,132
! .FORM COL=90
.psize 60,90
! .FORM LIN=123 COL=23
.psize 123,23
!
! .END
End of file not at start of line.
.END missing from end of file.

View File

@ -0,0 +1,102 @@
.MACRO SUM FROM=0, TO=9
; \FROM \TO
MOV R\FROM,R10
COUNT .ASSIGNA \FROM+1
.AWHILE \&COUNT LE \TO
MOV R\&COUNT,R10
COUNT .ASSIGNA \&COUNT+1
.AENDW
.ENDM
SUM 0,5
SUM TO=5
SUM FROM=2, TO=5
; hi this is a comment
.MACRO BACK_SLASH_SET
\(MOV #"\",R0)
.ENDM
BACK_SLASH_SET
.MACRO COMM
bar ; this comment will get copied out
foo \; this one will get dropped
.ENDM
COMM
BACK_SLASH_SET
.MACRO PLUS2
ADD #1,R\&V1
.SDATA "\&V'1"
.ENDM
V .ASSIGNC "R"
V1 .ASSIGNA 1
PLUS2
.MACRO PLUS1 P,P1
ADD #1,\P1
.SDATA "\P'1"
.ENDM
PLUS1 R,R1
.MACRO SUM P1
MOV R0,R10
ADD R1,R10
ADD R2,R10
\P1
ADD R3,R10
.ENDM
SUM .EXITM
.MACRO foo bar=a default=b
\bar
\default
bar
default
.ENDM
foo default=dog bar=cat
foo X Y
foo
foo bar=cat default=dog
.MACRO foo bar
HI
HI \bar
HI
.ENDM
foo 1
foo 123
foo 1 2 3 4
foo
.MACRO PUSH Rn
MOV.L \Rn,@-r15
.ENDM
PUSH R0
PUSH R1
.MACRO RES_STR STR, Rn
MOV.L #str\@,\Rn
BRA end_str\@
NOP
str\@ .SDATA "\STR"
.ALIGN 2
end_str\@
.ENDM
RES_STR "ONE",R0
RES_STR "TWO",R1
RES_STR "THREE",R2
RES_STR STR=donkey Rn=R1
RES_STR donkey,R1
RES_STR donkey Rn=R1
.END

375
gas/testsuite/gasp/macro.is Normal file
View File

@ -0,0 +1,375 @@
******** macro.amp
! .MACRO SUM FROM=0, TO=9
! ; \FROM \TO
! MOV R\FROM,R10
!COUNT .ASSIGNA \FROM+1
! .AWHILE \&COUNT LE \TO
! MOV R\&COUNT,R10
!COUNT .ASSIGNA \&COUNT+1
! .AENDW
! .ENDM
!
! SUM 0,5
! ; 0 5
; 0 5
! MOV R0,R10
MOV R0,R10
!COUNT .ASSIGNA 0+1
! .AWHILE \&COUNT LE 5
! MOV R\&COUNT,R10
!COUNT .ASSIGNA \&COUNT+1
! .AENDW
! MOV R\&COUNT,R10
MOV R1,R10
!COUNT .ASSIGNA \&COUNT+1
! .AWHILE \&COUNT LE 5
! MOV R\&COUNT,R10
!COUNT .ASSIGNA \&COUNT+1
! .AENDW
! MOV R\&COUNT,R10
MOV R2,R10
!COUNT .ASSIGNA \&COUNT+1
! .AWHILE \&COUNT LE 5
! MOV R\&COUNT,R10
!COUNT .ASSIGNA \&COUNT+1
! .AENDW
! MOV R\&COUNT,R10
MOV R3,R10
!COUNT .ASSIGNA \&COUNT+1
! .AWHILE \&COUNT LE 5
! MOV R\&COUNT,R10
!COUNT .ASSIGNA \&COUNT+1
! .AENDW
! MOV R\&COUNT,R10
MOV R4,R10
!COUNT .ASSIGNA \&COUNT+1
! .AWHILE \&COUNT LE 5
! MOV R\&COUNT,R10
!COUNT .ASSIGNA \&COUNT+1
! .AENDW
! MOV R\&COUNT,R10
MOV R5,R10
!COUNT .ASSIGNA \&COUNT+1
! .AWHILE \&COUNT LE 5
! MOV R\&COUNT,R10
!COUNT .ASSIGNA \&COUNT+1
! .AENDW
! SUM TO=5
! ; 0 5
; 0 5
! MOV R0,R10
MOV R0,R10
!COUNT .ASSIGNA 0+1
! .AWHILE \&COUNT LE 5
! MOV R\&COUNT,R10
!COUNT .ASSIGNA \&COUNT+1
! .AENDW
! MOV R\&COUNT,R10
MOV R1,R10
!COUNT .ASSIGNA \&COUNT+1
! .AWHILE \&COUNT LE 5
! MOV R\&COUNT,R10
!COUNT .ASSIGNA \&COUNT+1
! .AENDW
! MOV R\&COUNT,R10
MOV R2,R10
!COUNT .ASSIGNA \&COUNT+1
! .AWHILE \&COUNT LE 5
! MOV R\&COUNT,R10
!COUNT .ASSIGNA \&COUNT+1
! .AENDW
! MOV R\&COUNT,R10
MOV R3,R10
!COUNT .ASSIGNA \&COUNT+1
! .AWHILE \&COUNT LE 5
! MOV R\&COUNT,R10
!COUNT .ASSIGNA \&COUNT+1
! .AENDW
! MOV R\&COUNT,R10
MOV R4,R10
!COUNT .ASSIGNA \&COUNT+1
! .AWHILE \&COUNT LE 5
! MOV R\&COUNT,R10
!COUNT .ASSIGNA \&COUNT+1
! .AENDW
! MOV R\&COUNT,R10
MOV R5,R10
!COUNT .ASSIGNA \&COUNT+1
! .AWHILE \&COUNT LE 5
! MOV R\&COUNT,R10
!COUNT .ASSIGNA \&COUNT+1
! .AENDW
! SUM FROM=2, TO=5
! ; 2 5
; 2 5
! MOV R2,R10
MOV R2,R10
!COUNT .ASSIGNA 2+1
! .AWHILE \&COUNT LE 5
! MOV R\&COUNT,R10
!COUNT .ASSIGNA \&COUNT+1
! .AENDW
! MOV R\&COUNT,R10
MOV R3,R10
!COUNT .ASSIGNA \&COUNT+1
! .AWHILE \&COUNT LE 5
! MOV R\&COUNT,R10
!COUNT .ASSIGNA \&COUNT+1
! .AENDW
! MOV R\&COUNT,R10
MOV R4,R10
!COUNT .ASSIGNA \&COUNT+1
! .AWHILE \&COUNT LE 5
! MOV R\&COUNT,R10
!COUNT .ASSIGNA \&COUNT+1
! .AENDW
! MOV R\&COUNT,R10
MOV R5,R10
!COUNT .ASSIGNA \&COUNT+1
! .AWHILE \&COUNT LE 5
! MOV R\&COUNT,R10
!COUNT .ASSIGNA \&COUNT+1
! .AENDW
!
!
!; hi this is a comment
; hi this is a comment
! .MACRO BACK_SLASH_SET
! \(MOV #"\",R0)
! .ENDM
! BACK_SLASH_SET
! MOV #"\",R0
MOV #"\",R0
! .MACRO COMM
! bar ; this comment will get copied out
! foo \; this one will get dropped
! .ENDM
! COMM
! bar ; this comment will get copied out
bar ; this comment will get copied out
! foo
foo
! BACK_SLASH_SET
! MOV #"\",R0
MOV #"\",R0
! .MACRO PLUS2
! ADD #1,R\&V1
! .SDATA "\&V'1"
! .ENDM
!V .ASSIGNC "R"
!V1 .ASSIGNA 1
! PLUS2
! ADD #1,R\&V1
ADD #1,R1
! .SDATA "\&V'1"
.byte 82,49
! .MACRO PLUS1 P,P1
! ADD #1,\P1
! .SDATA "\P'1"
! .ENDM
! PLUS1 R,R1
! ADD #1,R1
ADD #1,R1
! .SDATA "R1"
.byte 82,49
!
! .MACRO SUM P1
! MOV R0,R10
! ADD R1,R10
! ADD R2,R10
! \P1
! ADD R3,R10
! .ENDM
!
! SUM .EXITM
! MOV R0,R10
MOV R0,R10
! ADD R1,R10
ADD R1,R10
! ADD R2,R10
ADD R2,R10
! .EXITM
!
! .MACRO foo bar=a default=b
! \bar
! \default
! bar
! default
! .ENDM
! foo default=dog bar=cat
! cat
cat
! dog
dog
! bar
bar
! default
default
! foo X Y
! X
X
! Y
Y
! bar
bar
! default
default
! foo
! a
a
! b
b
! bar
bar
! default
default
! foo bar=cat default=dog
! cat
cat
! dog
dog
! bar
bar
! default
default
!
!
! .MACRO foo bar
! HI
! HI \bar
! HI
! .ENDM
!
! foo 1
! HI
HI
! HI 1
HI 1
! HI
HI
! foo 123
! HI
HI
! HI 123
HI 123
! HI
HI
! foo 1 2 3 4
! foo
! HI
HI
! HI
HI
! HI
HI
!
!
! .MACRO PUSH Rn
! MOV.L \Rn,@-r15
! .ENDM
! PUSH R0
! MOV.L R0,@-r15
MOV.L R0,@-r15
! PUSH R1
! MOV.L R1,@-r15
MOV.L R1,@-r15
!
!
! .MACRO RES_STR STR, Rn
! MOV.L #str\@,\Rn
! BRA end_str\@
! NOP
!str\@ .SDATA "\STR"
! .ALIGN 2
!end_str\@
! .ENDM
!
! RES_STR "ONE",R0
! MOV.L #str00018,R0
MOV.L #str00018,R0
! BRA end_str00018
BRA end_str00018
! NOP
NOP
!str00018 .SDATA "ONE"
str00018: .byte 79,78,69
! .ALIGN 2
.align 2
!end_str00018
end_str00018:
! RES_STR "TWO",R1
! MOV.L #str00019,R1
MOV.L #str00019,R1
! BRA end_str00019
BRA end_str00019
! NOP
NOP
!str00019 .SDATA "TWO"
str00019: .byte 84,87,79
! .ALIGN 2
.align 2
!end_str00019
end_str00019:
! RES_STR "THREE",R2
! MOV.L #str00020,R2
MOV.L #str00020,R2
! BRA end_str00020
BRA end_str00020
! NOP
NOP
!str00020 .SDATA "THREE"
str00020: .byte 84,72,82,69,69
! .ALIGN 2
.align 2
!end_str00020
end_str00020:
!
!
!
! RES_STR STR=donkey Rn=R1
! MOV.L #str00021,R1
MOV.L #str00021,R1
! BRA end_str00021
BRA end_str00021
! NOP
NOP
!str00021 .SDATA "donkey"
str00021: .byte 100,111,110,107,101,121
! .ALIGN 2
.align 2
!end_str00021
end_str00021:
! RES_STR donkey,R1
! MOV.L #str00022,R1
MOV.L #str00022,R1
! BRA end_str00022
BRA end_str00022
! NOP
NOP
!str00022 .SDATA "donkey"
str00022: .byte 100,111,110,107,101,121
! .ALIGN 2
.align 2
!end_str00022
end_str00022:
! RES_STR donkey Rn=R1
! .END
macro.amp:70 Too many positional arguments.
macro.amp:98 Can't mix positional and keyword arguments.

View File

@ -0,0 +1,375 @@
******** macro.amp
! .MACRO SUM FROM=0, TO=9
! ; \FROM \TO
! MOV R\FROM,R10
!COUNT .ASSIGNA \FROM+1
! .AWHILE \&COUNT LE \TO
! MOV R\&COUNT,R10
!COUNT .ASSIGNA \&COUNT+1
! .AENDW
! .ENDM
!
! SUM 0,5
! ; 0 5
; 0 5
! MOV R0,R10
MOV R0,R10
!COUNT .ASSIGNA 0+1
! .AWHILE \&COUNT LE 5
! MOV R\&COUNT,R10
!COUNT .ASSIGNA \&COUNT+1
! .AENDW
! MOV R\&COUNT,R10
MOV R1,R10
!COUNT .ASSIGNA \&COUNT+1
! .AWHILE \&COUNT LE 5
! MOV R\&COUNT,R10
!COUNT .ASSIGNA \&COUNT+1
! .AENDW
! MOV R\&COUNT,R10
MOV R2,R10
!COUNT .ASSIGNA \&COUNT+1
! .AWHILE \&COUNT LE 5
! MOV R\&COUNT,R10
!COUNT .ASSIGNA \&COUNT+1
! .AENDW
! MOV R\&COUNT,R10
MOV R3,R10
!COUNT .ASSIGNA \&COUNT+1
! .AWHILE \&COUNT LE 5
! MOV R\&COUNT,R10
!COUNT .ASSIGNA \&COUNT+1
! .AENDW
! MOV R\&COUNT,R10
MOV R4,R10
!COUNT .ASSIGNA \&COUNT+1
! .AWHILE \&COUNT LE 5
! MOV R\&COUNT,R10
!COUNT .ASSIGNA \&COUNT+1
! .AENDW
! MOV R\&COUNT,R10
MOV R5,R10
!COUNT .ASSIGNA \&COUNT+1
! .AWHILE \&COUNT LE 5
! MOV R\&COUNT,R10
!COUNT .ASSIGNA \&COUNT+1
! .AENDW
! SUM TO=5
! ; 0 5
; 0 5
! MOV R0,R10
MOV R0,R10
!COUNT .ASSIGNA 0+1
! .AWHILE \&COUNT LE 5
! MOV R\&COUNT,R10
!COUNT .ASSIGNA \&COUNT+1
! .AENDW
! MOV R\&COUNT,R10
MOV R1,R10
!COUNT .ASSIGNA \&COUNT+1
! .AWHILE \&COUNT LE 5
! MOV R\&COUNT,R10
!COUNT .ASSIGNA \&COUNT+1
! .AENDW
! MOV R\&COUNT,R10
MOV R2,R10
!COUNT .ASSIGNA \&COUNT+1
! .AWHILE \&COUNT LE 5
! MOV R\&COUNT,R10
!COUNT .ASSIGNA \&COUNT+1
! .AENDW
! MOV R\&COUNT,R10
MOV R3,R10
!COUNT .ASSIGNA \&COUNT+1
! .AWHILE \&COUNT LE 5
! MOV R\&COUNT,R10
!COUNT .ASSIGNA \&COUNT+1
! .AENDW
! MOV R\&COUNT,R10
MOV R4,R10
!COUNT .ASSIGNA \&COUNT+1
! .AWHILE \&COUNT LE 5
! MOV R\&COUNT,R10
!COUNT .ASSIGNA \&COUNT+1
! .AENDW
! MOV R\&COUNT,R10
MOV R5,R10
!COUNT .ASSIGNA \&COUNT+1
! .AWHILE \&COUNT LE 5
! MOV R\&COUNT,R10
!COUNT .ASSIGNA \&COUNT+1
! .AENDW
! SUM FROM=2, TO=5
! ; 2 5
; 2 5
! MOV R2,R10
MOV R2,R10
!COUNT .ASSIGNA 2+1
! .AWHILE \&COUNT LE 5
! MOV R\&COUNT,R10
!COUNT .ASSIGNA \&COUNT+1
! .AENDW
! MOV R\&COUNT,R10
MOV R3,R10
!COUNT .ASSIGNA \&COUNT+1
! .AWHILE \&COUNT LE 5
! MOV R\&COUNT,R10
!COUNT .ASSIGNA \&COUNT+1
! .AENDW
! MOV R\&COUNT,R10
MOV R4,R10
!COUNT .ASSIGNA \&COUNT+1
! .AWHILE \&COUNT LE 5
! MOV R\&COUNT,R10
!COUNT .ASSIGNA \&COUNT+1
! .AENDW
! MOV R\&COUNT,R10
MOV R5,R10
!COUNT .ASSIGNA \&COUNT+1
! .AWHILE \&COUNT LE 5
! MOV R\&COUNT,R10
!COUNT .ASSIGNA \&COUNT+1
! .AENDW
!
!
!; hi this is a comment
; hi this is a comment
! .MACRO BACK_SLASH_SET
! \(MOV #"\",R0)
! .ENDM
! BACK_SLASH_SET
! MOV #"\",R0
MOV #"\",R0
! .MACRO COMM
! bar ; this comment will get copied out
! foo \; this one will get dropped
! .ENDM
! COMM
! bar ; this comment will get copied out
bar ; this comment will get copied out
! foo
foo
! BACK_SLASH_SET
! MOV #"\",R0
MOV #"\",R0
! .MACRO PLUS2
! ADD #1,R\&V1
! .SDATA "\&V'1"
! .ENDM
!V .ASSIGNC "R"
!V1 .ASSIGNA 1
! PLUS2
! ADD #1,R\&V1
ADD #1,R1
! .SDATA "\&V'1"
.byte 82,49
! .MACRO PLUS1 P,P1
! ADD #1,\P1
! .SDATA "\P'1"
! .ENDM
! PLUS1 R,R1
! ADD #1,R1
ADD #1,R1
! .SDATA "R1"
.byte 82,49
!
! .MACRO SUM P1
! MOV R0,R10
! ADD R1,R10
! ADD R2,R10
! \P1
! ADD R3,R10
! .ENDM
!
! SUM .EXITM
! MOV R0,R10
MOV R0,R10
! ADD R1,R10
ADD R1,R10
! ADD R2,R10
ADD R2,R10
! .EXITM
!
! .MACRO foo bar=a default=b
! \bar
! \default
! bar
! default
! .ENDM
! foo default=dog bar=cat
! cat
cat
! dog
dog
! bar
bar
! default
default
! foo X Y
! X
X
! Y
Y
! bar
bar
! default
default
! foo
! a
a
! b
b
! bar
bar
! default
default
! foo bar=cat default=dog
! cat
cat
! dog
dog
! bar
bar
! default
default
!
!
! .MACRO foo bar
! HI
! HI \bar
! HI
! .ENDM
!
! foo 1
! HI
HI
! HI 1
HI 1
! HI
HI
! foo 123
! HI
HI
! HI 123
HI 123
! HI
HI
! foo 1 2 3 4
! foo
! HI
HI
! HI
HI
! HI
HI
!
!
! .MACRO PUSH Rn
! MOV.L \Rn,@-r15
! .ENDM
! PUSH R0
! MOV.L R0,@-r15
MOV.L R0,@-r15
! PUSH R1
! MOV.L R1,@-r15
MOV.L R1,@-r15
!
!
! .MACRO RES_STR STR, Rn
! MOV.L #str\@,\Rn
! BRA end_str\@
! NOP
!str\@ .SDATA "\STR"
! .ALIGN 2
!end_str\@
! .ENDM
!
! RES_STR "ONE",R0
! MOV.L #str00018,R0
MOV.L #str00018,R0
! BRA end_str00018
BRA end_str00018
! NOP
NOP
!str00018 .SDATA "ONE"
str00018: .byte 79,78,69
! .ALIGN 2
.align 2
!end_str00018
end_str00018:
! RES_STR "TWO",R1
! MOV.L #str00019,R1
MOV.L #str00019,R1
! BRA end_str00019
BRA end_str00019
! NOP
NOP
!str00019 .SDATA "TWO"
str00019: .byte 84,87,79
! .ALIGN 2
.align 2
!end_str00019
end_str00019:
! RES_STR "THREE",R2
! MOV.L #str00020,R2
MOV.L #str00020,R2
! BRA end_str00020
BRA end_str00020
! NOP
NOP
!str00020 .SDATA "THREE"
str00020: .byte 84,72,82,69,69
! .ALIGN 2
.align 2
!end_str00020
end_str00020:
!
!
!
! RES_STR STR=donkey Rn=R1
! MOV.L #str00021,R1
MOV.L #str00021,R1
! BRA end_str00021
BRA end_str00021
! NOP
NOP
!str00021 .SDATA "donkey"
str00021: .byte 100,111,110,107,101,121
! .ALIGN 2
.align 2
!end_str00021
end_str00021:
! RES_STR donkey,R1
! MOV.L #str00022,R1
MOV.L #str00022,R1
! BRA end_str00022
BRA end_str00022
! NOP
NOP
!str00022 .SDATA "donkey"
str00022: .byte 100,111,110,107,101,121
! .ALIGN 2
.align 2
!end_str00022
end_str00022:
! RES_STR donkey Rn=R1
! .END
macro.amp:70 Too many positional arguments.
macro.amp:98 Can't mix positional and keyword arguments.

View File

@ -0,0 +1,9 @@
foo .REG (r1)
add foo,foo
bar .reg (r2)
add bar,foo
.END

16
gas/testsuite/gasp/reg.is Normal file
View File

@ -0,0 +1,16 @@
******** reg.amp
!
!
!foo .REG (r1)
! add foo,foo
add r1,r1
!
!bar .reg (r2)
! add bar,foo
add r2,r1
!
! .END

View File

@ -0,0 +1,16 @@
******** reg.amp
!
!
!foo .REG (r1)
! add foo,foo
add r1,r1
!
!bar .reg (r2)
! add bar,foo
add r2,r1
!
! .END

View File

@ -0,0 +1,13 @@
.AREPEAT 5
FIVE
.AREPEAT 2
TWO
.AENDR
.AREPEAT 3
THREE
.AREPEAT 2
TWO
.AENDR
.AENDR
.AENDR
.END

392
gas/testsuite/gasp/rep.is Normal file
View File

@ -0,0 +1,392 @@
******** rep.amp
! .AREPEAT 5
! FIVE
! .AREPEAT 2
! TWO
! .AENDR
! .AREPEAT 3
! THREE
! .AREPEAT 2
! TWO
! .AENDR
! .AENDR
! .AENDR
! FIVE
FIVE
! .AREPEAT 2
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 3
! THREE
! .AREPEAT 2
! TWO
! .AENDR
! .AENDR
! THREE
THREE
! .AREPEAT 2
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 2
! THREE
! .AREPEAT 2
! TWO
! .AENDR
! .AENDR
! THREE
THREE
! .AREPEAT 2
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! THREE
! .AREPEAT 2
! TWO
! .AENDR
! .AENDR
! THREE
THREE
! .AREPEAT 2
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 4
! FIVE
! .AREPEAT 2
! TWO
! .AENDR
! .AREPEAT 3
! THREE
! .AREPEAT 2
! TWO
! .AENDR
! .AENDR
! .AENDR
! FIVE
FIVE
! .AREPEAT 2
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 3
! THREE
! .AREPEAT 2
! TWO
! .AENDR
! .AENDR
! THREE
THREE
! .AREPEAT 2
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 2
! THREE
! .AREPEAT 2
! TWO
! .AENDR
! .AENDR
! THREE
THREE
! .AREPEAT 2
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! THREE
! .AREPEAT 2
! TWO
! .AENDR
! .AENDR
! THREE
THREE
! .AREPEAT 2
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 3
! FIVE
! .AREPEAT 2
! TWO
! .AENDR
! .AREPEAT 3
! THREE
! .AREPEAT 2
! TWO
! .AENDR
! .AENDR
! .AENDR
! FIVE
FIVE
! .AREPEAT 2
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 3
! THREE
! .AREPEAT 2
! TWO
! .AENDR
! .AENDR
! THREE
THREE
! .AREPEAT 2
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 2
! THREE
! .AREPEAT 2
! TWO
! .AENDR
! .AENDR
! THREE
THREE
! .AREPEAT 2
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! THREE
! .AREPEAT 2
! TWO
! .AENDR
! .AENDR
! THREE
THREE
! .AREPEAT 2
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 2
! FIVE
! .AREPEAT 2
! TWO
! .AENDR
! .AREPEAT 3
! THREE
! .AREPEAT 2
! TWO
! .AENDR
! .AENDR
! .AENDR
! FIVE
FIVE
! .AREPEAT 2
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 3
! THREE
! .AREPEAT 2
! TWO
! .AENDR
! .AENDR
! THREE
THREE
! .AREPEAT 2
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 2
! THREE
! .AREPEAT 2
! TWO
! .AENDR
! .AENDR
! THREE
THREE
! .AREPEAT 2
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! THREE
! .AREPEAT 2
! TWO
! .AENDR
! .AENDR
! THREE
THREE
! .AREPEAT 2
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! FIVE
! .AREPEAT 2
! TWO
! .AENDR
! .AREPEAT 3
! THREE
! .AREPEAT 2
! TWO
! .AENDR
! .AENDR
! .AENDR
! FIVE
FIVE
! .AREPEAT 2
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 3
! THREE
! .AREPEAT 2
! TWO
! .AENDR
! .AENDR
! THREE
THREE
! .AREPEAT 2
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 2
! THREE
! .AREPEAT 2
! TWO
! .AENDR
! .AENDR
! THREE
THREE
! .AREPEAT 2
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! THREE
! .AREPEAT 2
! TWO
! .AENDR
! .AENDR
! THREE
THREE
! .AREPEAT 2
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! TWO
! .AENDR
! TWO
TWO
! .END

392
gas/testsuite/gasp/rep.was Normal file
View File

@ -0,0 +1,392 @@
******** rep.amp
! .AREPEAT 5
! FIVE
! .AREPEAT 2
! TWO
! .AENDR
! .AREPEAT 3
! THREE
! .AREPEAT 2
! TWO
! .AENDR
! .AENDR
! .AENDR
! FIVE
FIVE
! .AREPEAT 2
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 3
! THREE
! .AREPEAT 2
! TWO
! .AENDR
! .AENDR
! THREE
THREE
! .AREPEAT 2
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 2
! THREE
! .AREPEAT 2
! TWO
! .AENDR
! .AENDR
! THREE
THREE
! .AREPEAT 2
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! THREE
! .AREPEAT 2
! TWO
! .AENDR
! .AENDR
! THREE
THREE
! .AREPEAT 2
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 4
! FIVE
! .AREPEAT 2
! TWO
! .AENDR
! .AREPEAT 3
! THREE
! .AREPEAT 2
! TWO
! .AENDR
! .AENDR
! .AENDR
! FIVE
FIVE
! .AREPEAT 2
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 3
! THREE
! .AREPEAT 2
! TWO
! .AENDR
! .AENDR
! THREE
THREE
! .AREPEAT 2
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 2
! THREE
! .AREPEAT 2
! TWO
! .AENDR
! .AENDR
! THREE
THREE
! .AREPEAT 2
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! THREE
! .AREPEAT 2
! TWO
! .AENDR
! .AENDR
! THREE
THREE
! .AREPEAT 2
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 3
! FIVE
! .AREPEAT 2
! TWO
! .AENDR
! .AREPEAT 3
! THREE
! .AREPEAT 2
! TWO
! .AENDR
! .AENDR
! .AENDR
! FIVE
FIVE
! .AREPEAT 2
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 3
! THREE
! .AREPEAT 2
! TWO
! .AENDR
! .AENDR
! THREE
THREE
! .AREPEAT 2
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 2
! THREE
! .AREPEAT 2
! TWO
! .AENDR
! .AENDR
! THREE
THREE
! .AREPEAT 2
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! THREE
! .AREPEAT 2
! TWO
! .AENDR
! .AENDR
! THREE
THREE
! .AREPEAT 2
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 2
! FIVE
! .AREPEAT 2
! TWO
! .AENDR
! .AREPEAT 3
! THREE
! .AREPEAT 2
! TWO
! .AENDR
! .AENDR
! .AENDR
! FIVE
FIVE
! .AREPEAT 2
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 3
! THREE
! .AREPEAT 2
! TWO
! .AENDR
! .AENDR
! THREE
THREE
! .AREPEAT 2
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 2
! THREE
! .AREPEAT 2
! TWO
! .AENDR
! .AENDR
! THREE
THREE
! .AREPEAT 2
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! THREE
! .AREPEAT 2
! TWO
! .AENDR
! .AENDR
! THREE
THREE
! .AREPEAT 2
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! FIVE
! .AREPEAT 2
! TWO
! .AENDR
! .AREPEAT 3
! THREE
! .AREPEAT 2
! TWO
! .AENDR
! .AENDR
! .AENDR
! FIVE
FIVE
! .AREPEAT 2
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 3
! THREE
! .AREPEAT 2
! TWO
! .AENDR
! .AENDR
! THREE
THREE
! .AREPEAT 2
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 2
! THREE
! .AREPEAT 2
! TWO
! .AENDR
! .AENDR
! THREE
THREE
! .AREPEAT 2
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! THREE
! .AREPEAT 2
! TWO
! .AENDR
! .AENDR
! THREE
THREE
! .AREPEAT 2
! TWO
! .AENDR
! TWO
TWO
! .AREPEAT 1
! TWO
! .AENDR
! TWO
TWO
! .END

View File

@ -0,0 +1,14 @@
.AREPEAT 10
TEN
.AREPEAT 2
TWENTY
.AENDR
.AENDR
.AREPEAT 3
ROTCL R2
DIV1 R0,R1
.AENDR
.END

View File

@ -0,0 +1,212 @@
******** repeat.amp
!
! .AREPEAT 10
! TEN
! .AREPEAT 2
! TWENTY
! .AENDR
! .AENDR
! TEN
TEN
! .AREPEAT 2
! TWENTY
! .AENDR
! TWENTY
TWENTY
! .AREPEAT 1
! TWENTY
! .AENDR
! TWENTY
TWENTY
! .AREPEAT 9
! TEN
! .AREPEAT 2
! TWENTY
! .AENDR
! .AENDR
! TEN
TEN
! .AREPEAT 2
! TWENTY
! .AENDR
! TWENTY
TWENTY
! .AREPEAT 1
! TWENTY
! .AENDR
! TWENTY
TWENTY
! .AREPEAT 8
! TEN
! .AREPEAT 2
! TWENTY
! .AENDR
! .AENDR
! TEN
TEN
! .AREPEAT 2
! TWENTY
! .AENDR
! TWENTY
TWENTY
! .AREPEAT 1
! TWENTY
! .AENDR
! TWENTY
TWENTY
! .AREPEAT 7
! TEN
! .AREPEAT 2
! TWENTY
! .AENDR
! .AENDR
! TEN
TEN
! .AREPEAT 2
! TWENTY
! .AENDR
! TWENTY
TWENTY
! .AREPEAT 1
! TWENTY
! .AENDR
! TWENTY
TWENTY
! .AREPEAT 6
! TEN
! .AREPEAT 2
! TWENTY
! .AENDR
! .AENDR
! TEN
TEN
! .AREPEAT 2
! TWENTY
! .AENDR
! TWENTY
TWENTY
! .AREPEAT 1
! TWENTY
! .AENDR
! TWENTY
TWENTY
! .AREPEAT 5
! TEN
! .AREPEAT 2
! TWENTY
! .AENDR
! .AENDR
! TEN
TEN
! .AREPEAT 2
! TWENTY
! .AENDR
! TWENTY
TWENTY
! .AREPEAT 1
! TWENTY
! .AENDR
! TWENTY
TWENTY
! .AREPEAT 4
! TEN
! .AREPEAT 2
! TWENTY
! .AENDR
! .AENDR
! TEN
TEN
! .AREPEAT 2
! TWENTY
! .AENDR
! TWENTY
TWENTY
! .AREPEAT 1
! TWENTY
! .AENDR
! TWENTY
TWENTY
! .AREPEAT 3
! TEN
! .AREPEAT 2
! TWENTY
! .AENDR
! .AENDR
! TEN
TEN
! .AREPEAT 2
! TWENTY
! .AENDR
! TWENTY
TWENTY
! .AREPEAT 1
! TWENTY
! .AENDR
! TWENTY
TWENTY
! .AREPEAT 2
! TEN
! .AREPEAT 2
! TWENTY
! .AENDR
! .AENDR
! TEN
TEN
! .AREPEAT 2
! TWENTY
! .AENDR
! TWENTY
TWENTY
! .AREPEAT 1
! TWENTY
! .AENDR
! TWENTY
TWENTY
! .AREPEAT 1
! TEN
! .AREPEAT 2
! TWENTY
! .AENDR
! .AENDR
! TEN
TEN
! .AREPEAT 2
! TWENTY
! .AENDR
! TWENTY
TWENTY
! .AREPEAT 1
! TWENTY
! .AENDR
! TWENTY
TWENTY
!
! .AREPEAT 3
! ROTCL R2
! DIV1 R0,R1
! .AENDR
! ROTCL R2
ROTCL R2
! DIV1 R0,R1
DIV1 R0,R1
! .AREPEAT 2
! ROTCL R2
! DIV1 R0,R1
! .AENDR
! ROTCL R2
ROTCL R2
! DIV1 R0,R1
DIV1 R0,R1
! .AREPEAT 1
! ROTCL R2
! DIV1 R0,R1
! .AENDR
! ROTCL R2
ROTCL R2
! DIV1 R0,R1
DIV1 R0,R1
!
! .END

View File

@ -0,0 +1,212 @@
******** repeat.amp
!
! .AREPEAT 10
! TEN
! .AREPEAT 2
! TWENTY
! .AENDR
! .AENDR
! TEN
TEN
! .AREPEAT 2
! TWENTY
! .AENDR
! TWENTY
TWENTY
! .AREPEAT 1
! TWENTY
! .AENDR
! TWENTY
TWENTY
! .AREPEAT 9
! TEN
! .AREPEAT 2
! TWENTY
! .AENDR
! .AENDR
! TEN
TEN
! .AREPEAT 2
! TWENTY
! .AENDR
! TWENTY
TWENTY
! .AREPEAT 1
! TWENTY
! .AENDR
! TWENTY
TWENTY
! .AREPEAT 8
! TEN
! .AREPEAT 2
! TWENTY
! .AENDR
! .AENDR
! TEN
TEN
! .AREPEAT 2
! TWENTY
! .AENDR
! TWENTY
TWENTY
! .AREPEAT 1
! TWENTY
! .AENDR
! TWENTY
TWENTY
! .AREPEAT 7
! TEN
! .AREPEAT 2
! TWENTY
! .AENDR
! .AENDR
! TEN
TEN
! .AREPEAT 2
! TWENTY
! .AENDR
! TWENTY
TWENTY
! .AREPEAT 1
! TWENTY
! .AENDR
! TWENTY
TWENTY
! .AREPEAT 6
! TEN
! .AREPEAT 2
! TWENTY
! .AENDR
! .AENDR
! TEN
TEN
! .AREPEAT 2
! TWENTY
! .AENDR
! TWENTY
TWENTY
! .AREPEAT 1
! TWENTY
! .AENDR
! TWENTY
TWENTY
! .AREPEAT 5
! TEN
! .AREPEAT 2
! TWENTY
! .AENDR
! .AENDR
! TEN
TEN
! .AREPEAT 2
! TWENTY
! .AENDR
! TWENTY
TWENTY
! .AREPEAT 1
! TWENTY
! .AENDR
! TWENTY
TWENTY
! .AREPEAT 4
! TEN
! .AREPEAT 2
! TWENTY
! .AENDR
! .AENDR
! TEN
TEN
! .AREPEAT 2
! TWENTY
! .AENDR
! TWENTY
TWENTY
! .AREPEAT 1
! TWENTY
! .AENDR
! TWENTY
TWENTY
! .AREPEAT 3
! TEN
! .AREPEAT 2
! TWENTY
! .AENDR
! .AENDR
! TEN
TEN
! .AREPEAT 2
! TWENTY
! .AENDR
! TWENTY
TWENTY
! .AREPEAT 1
! TWENTY
! .AENDR
! TWENTY
TWENTY
! .AREPEAT 2
! TEN
! .AREPEAT 2
! TWENTY
! .AENDR
! .AENDR
! TEN
TEN
! .AREPEAT 2
! TWENTY
! .AENDR
! TWENTY
TWENTY
! .AREPEAT 1
! TWENTY
! .AENDR
! TWENTY
TWENTY
! .AREPEAT 1
! TEN
! .AREPEAT 2
! TWENTY
! .AENDR
! .AENDR
! TEN
TEN
! .AREPEAT 2
! TWENTY
! .AENDR
! TWENTY
TWENTY
! .AREPEAT 1
! TWENTY
! .AENDR
! TWENTY
TWENTY
!
! .AREPEAT 3
! ROTCL R2
! DIV1 R0,R1
! .AENDR
! ROTCL R2
ROTCL R2
! DIV1 R0,R1
DIV1 R0,R1
! .AREPEAT 2
! ROTCL R2
! DIV1 R0,R1
! .AENDR
! ROTCL R2
ROTCL R2
! DIV1 R0,R1
DIV1 R0,R1
! .AREPEAT 1
! ROTCL R2
! DIV1 R0,R1
! .AENDR
! ROTCL R2
ROTCL R2
! DIV1 R0,R1
DIV1 R0,R1
!
! .END

View File

@ -0,0 +1,2 @@
.REPEAT 10

View File

@ -0,0 +1,3 @@
.AREPEAT 10
.END

View File

@ -0,0 +1,6 @@
******** reperr1.amp
!
! .AREPEAT 10
! .END
!End of file whilst inside .AREPEAT, started on line 3.

View File

@ -0,0 +1,6 @@
******** reperr1.amp
!
! .AREPEAT 10
! .END
!End of file whilst inside .AREPEAT, started on line 3.

View File

@ -0,0 +1,6 @@
.AREPEAT 5
.AENDR
.AENDR
.END

View File

@ -0,0 +1,16 @@
******** reperr2.amp
!
! .AREPEAT 5
! .AENDR
! .AREPEAT 4
! .AENDR
! .AREPEAT 3
! .AENDR
! .AREPEAT 2
! .AENDR
! .AREPEAT 1
! .AENDR
! .AENDR
! .END
reperr2.amp:4 AENDR without a AREPEAT.

View File

@ -0,0 +1,16 @@
******** reperr2.amp
!
! .AREPEAT 5
! .AENDR
! .AREPEAT 4
! .AENDR
! .AREPEAT 3
! .AENDR
! .AREPEAT 2
! .AENDR
! .AREPEAT 1
! .AENDR
! .AENDR
! .END
reperr2.amp:4 AENDR without a AREPEAT.

View File

@ -0,0 +1,21 @@
.AREPEAT 4
.AREPEAT 4
.AREPEAT 4
.AREPEAT 4
stuff
.AENDR
which
.AENDR
will
.AENDR
get
.AENDR
repetaed
.AENDR
.AENDR
.AENDR
.AENDR
.AENDR
.AENDR
.END

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,24 @@
.SDATA "HI","STEVE"
.SDATA "HI" , "STEVE" , <72>,<73>,<83><69><86><69>
.SDATA "H""I" , "STEVE" , <72>,<73>,<83><69><86><69>
.SDATA "SHOULD NOT FAIL" "HERE"
.SDATA "SHOULD FAIL" foo "HERE"
.SDATAB 8,"BOINK"
; examples from book
.SDATAB 2,"AAAAA"
.SDATAB 2,"""BBB"""
.SDATAB 2,"AABB"<H'07>
a1: .SDATAZ "HI"
a2: .SDATAC "HI"
a3: .SDATA "HI"

View File

@ -0,0 +1,62 @@
******** sdata.amp
!
!
! .SDATA "HI","STEVE"
.byte 72,73,83,84,69,86,69
! .SDATA "HI" , "STEVE" , <72>,<73>,<83><69><86><69>
.byte 72,73,83,84,69,86,69,72,73,83,69,86,69
!
! .SDATA "H""I" , "STEVE" , <72>,<73>,<83><69><86><69>
.byte 72,34,73,83,84,69,86,69,72,73,83,69,86,69
!
!
!
! .SDATA "SHOULD NOT FAIL" "HERE"
.byte 83,72,79,85,76,68,32,78,79,84,32,70,65,73,76,83,72,79,85,76,68,32,78,79,84,32,70,65,73,76,72,69,82,69
! .SDATA "SHOULD FAIL" foo "HERE"
.byte 83,72,79,85,76,68,32,70,65,73,76
!
! .SDATAB 8,"BOINK"
.byte 66,79,73,78,75
.byte 66,79,73,78,75
.byte 66,79,73,78,75
.byte 66,79,73,78,75
.byte 66,79,73,78,75
.byte 66,79,73,78,75
.byte 66,79,73,78,75
.byte 66,79,73,78,75
!
! ; examples from book
; examples from book
!
! .SDATAB 2,"AAAAA"
.byte 65,65,65,65,65
.byte 65,65,65,65,65
! .SDATAB 2,"""BBB"""
.byte 34,66,66,66,34
.byte 34,66,66,66,34
! .SDATAB 2,"AABB"<H'07>
.byte 65,65,66,66,7
.byte 65,65,66,66,7
!
!
!a1: .SDATAZ "HI"
a1: .byte 72,73,0
!a2: .SDATAC "HI"
a2: .byte 2,72,73
!a3: .SDATA "HI"
a3: .byte 72,73
!sdata.amp:11 illegal character in SDATA line (0x66).
.END missing from end of file.

View File

@ -0,0 +1,62 @@
******** sdata.amp
!
!
! .SDATA "HI","STEVE"
.byte 72,73,83,84,69,86,69
! .SDATA "HI" , "STEVE" , <72>,<73>,<83><69><86><69>
.byte 72,73,83,84,69,86,69,72,73,83,69,86,69
!
! .SDATA "H""I" , "STEVE" , <72>,<73>,<83><69><86><69>
.byte 72,34,73,83,84,69,86,69,72,73,83,69,86,69
!
!
!
! .SDATA "SHOULD NOT FAIL" "HERE"
.byte 83,72,79,85,76,68,32,78,79,84,32,70,65,73,76,83,72,79,85,76,68,32,78,79,84,32,70,65,73,76,72,69,82,69
! .SDATA "SHOULD FAIL" foo "HERE"
.byte 83,72,79,85,76,68,32,70,65,73,76
!
! .SDATAB 8,"BOINK"
.byte 66,79,73,78,75
.byte 66,79,73,78,75
.byte 66,79,73,78,75
.byte 66,79,73,78,75
.byte 66,79,73,78,75
.byte 66,79,73,78,75
.byte 66,79,73,78,75
.byte 66,79,73,78,75
!
! ; examples from book
; examples from book
!
! .SDATAB 2,"AAAAA"
.byte 65,65,65,65,65
.byte 65,65,65,65,65
! .SDATAB 2,"""BBB"""
.byte 34,66,66,66,34
.byte 34,66,66,66,34
! .SDATAB 2,"AABB"<H'07>
.byte 65,65,66,66,7
.byte 65,65,66,66,7
!
!
!a1: .SDATAZ "HI"
a1: .byte 72,73,0
!a2: .SDATAC "HI"
a2: .byte 2,72,73
!a3: .SDATA "HI"
a3: .byte 72,73
!sdata.amp:11 illegal character in SDATA line (0x66).
.END missing from end of file.

View File

@ -0,0 +1,26 @@
.MACRO RESERVE_STR P1=0 P2
.SDATA .SUBSTR("ABCDEFG",\P1,\P2)
.ENDM
RESERVE_STR 2,2
RESERVE_STR ,3
.MACRO FIND_STR P1
.DATA.W .INSTR("ABCDEFG","\P1", 0)
.ENDM
FIND_STR CDE
FIND_STR H
.MACRO RESERVE_LENGTH P1
.ALIGN 4
.SRES .LEN("\P1")
.ENDM
RESERVE_LENGTH ABCDEF
RESERVE_LENGTH ABC
.END

View File

@ -0,0 +1,50 @@
******** sfunc.amp
!
! .MACRO RESERVE_STR P1=0 P2
! .SDATA .SUBSTR("ABCDEFG",\P1,\P2)
! .ENDM
!
! RESERVE_STR 2,2
! .SDATA .SUBSTR("ABCDEFG",2,2)
.byte 67,68
! RESERVE_STR ,3
! .SDATA .SUBSTR("ABCDEFG",0,3)
.byte 65,66,67
!
!
! .MACRO FIND_STR P1
! .DATA.W .INSTR("ABCDEFG","\P1", 0)
! .ENDM
!
! FIND_STR CDE
! .DATA.W .INSTR("ABCDEFG","CDE", 0)
.short 2
! FIND_STR H
! .DATA.W .INSTR("ABCDEFG","H", 0)
.short -1
!
! .MACRO RESERVE_LENGTH P1
! .ALIGN 4
! .SRES .LEN("\P1")
! .ENDM
!
! RESERVE_LENGTH ABCDEF
! .ALIGN 4
.align 4
! .SRES .LEN("ABCDEF")
.space 24
! RESERVE_LENGTH ABC
! .ALIGN 4
.align 4
! .SRES .LEN("ABC")
.space 12
!
! .END

View File

@ -0,0 +1,50 @@
******** sfunc.amp
!
! .MACRO RESERVE_STR P1=0 P2
! .SDATA .SUBSTR("ABCDEFG",\P1,\P2)
! .ENDM
!
! RESERVE_STR 2,2
! .SDATA .SUBSTR("ABCDEFG",2,2)
.byte 67,68
! RESERVE_STR ,3
! .SDATA .SUBSTR("ABCDEFG",0,3)
.byte 65,66,67
!
!
! .MACRO FIND_STR P1
! .DATA.W .INSTR("ABCDEFG","\P1", 0)
! .ENDM
!
! FIND_STR CDE
! .DATA.W .INSTR("ABCDEFG","CDE", 0)
.short 2
! FIND_STR H
! .DATA.W .INSTR("ABCDEFG","H", 0)
.short -1
!
! .MACRO RESERVE_LENGTH P1
! .ALIGN 4
! .SRES .LEN("\P1")
! .ENDM
!
! RESERVE_LENGTH ABCDEF
! .ALIGN 4
.align 4
! .SRES .LEN("ABCDEF")
.space 24
! RESERVE_LENGTH ABC
! .ALIGN 4
.align 4
! .SRES .LEN("ABC")
.space 12
!
! .END

View File

@ -0,0 +1,3 @@
test for eof in middle of line
.END

6
gas/testsuite/gasp/t1.is Normal file
View File

@ -0,0 +1,6 @@
******** t1.amp
!
! test for eof in middle of line
test for eof in middle of line
! .END

View File

@ -0,0 +1,6 @@
******** t1.amp
!
! test for eof in middle of line
test for eof in middle of line
! .END

View File

@ -0,0 +1,8 @@
test
+ continued
+ lines
.END

14
gas/testsuite/gasp/t2.is Normal file
View File

@ -0,0 +1,14 @@
******** t2.amp
!
!
! test
!+continued
!+lines
testcontinuedlines
!
!
! .END

14
gas/testsuite/gasp/t2.was Normal file
View File

@ -0,0 +1,14 @@
******** t2.amp
!
!
! test
!+continued
!+lines
testcontinuedlines
!
!
! .END

12
gas/testsuite/gasp/t3.asm Normal file
View File

@ -0,0 +1,12 @@
test base convertions
B'1001000
Q'210
D'136
H'88
FOOB'1001000BAR
FOOQ'210BAR
FOOD'136BAR
FOOH'88BAR

26
gas/testsuite/gasp/t3.is Normal file
View File

@ -0,0 +1,26 @@
******** t3.amp
!
! test base convertions
test base convertions
!
! B'1001000
72
! Q'210
136
! D'136
136
! H'88
136
!
! FOOB'1001000BAR
FOOB'1001000BAR
! FOOQ'210BAR
FOOQ'210BAR
! FOOD'136BAR
FOOD'136BAR
! FOOH'88BAR
FOOH'88BAR
!.END missing from end of file.

26
gas/testsuite/gasp/t3.was Normal file
View File

@ -0,0 +1,26 @@
******** t3.amp
!
! test base convertions
test base convertions
!
! B'1001000
72
! Q'210
136
! D'136
136
! H'88
136
!
! FOOB'1001000BAR
FOOB'1001000BAR
! FOOQ'210BAR
FOOQ'210BAR
! FOOD'136BAR
FOOD'136BAR
! FOOH'88BAR
FOOH'88BAR
!.END missing from end of file.

View File

@ -0,0 +1,18 @@
donkey
bar .ASSIGNA 0
.AWHILE \&bar LT 5
HI BAR IS \&bar
foo .ASSIGNA 0
.AWHILE \&foo LT 2
HI BEFORE
.AREPEAT 2
HI MEDIUM \&foo \&bar
.AENDR
HI AFTER
foo .ASSIGNA \&foo + 1
.AENDW
bar .ASSIGNA \&bar + 1
AND ITS NOW \&bar
.AENDW
.END

389
gas/testsuite/gasp/while.is Normal file
View File

@ -0,0 +1,389 @@
******** while.amp
! donkey
donkey
!bar .ASSIGNA 0
! .AWHILE \&bar LT 5
! HI BAR IS \&bar
!foo .ASSIGNA 0
! .AWHILE \&foo LT 2
! HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI AFTER
!foo .ASSIGNA \&foo + 1
! .AENDW
!bar .ASSIGNA \&bar + 1
! AND ITS NOW \&bar
! .AENDW
! HI BAR IS \&bar
HI BAR IS 0
!foo .ASSIGNA 0
! .AWHILE \&foo LT 2
! HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI AFTER
!foo .ASSIGNA \&foo + 1
! .AENDW
! HI BEFORE
HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI MEDIUM \&foo \&bar
HI MEDIUM 0 0
! .AREPEAT 1
! HI MEDIUM \&foo \&bar
! .AENDR
! HI MEDIUM \&foo \&bar
HI MEDIUM 0 0
! HI AFTER
HI AFTER
!foo .ASSIGNA \&foo + 1
! .AWHILE \&foo LT 2
! HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI AFTER
!foo .ASSIGNA \&foo + 1
! .AENDW
! HI BEFORE
HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI MEDIUM \&foo \&bar
HI MEDIUM 1 0
! .AREPEAT 1
! HI MEDIUM \&foo \&bar
! .AENDR
! HI MEDIUM \&foo \&bar
HI MEDIUM 1 0
! HI AFTER
HI AFTER
!foo .ASSIGNA \&foo + 1
! .AWHILE \&foo LT 2
! HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI AFTER
!foo .ASSIGNA \&foo + 1
! .AENDW
!bar .ASSIGNA \&bar + 1
! AND ITS NOW \&bar
AND ITS NOW 1
! .AWHILE \&bar LT 5
! HI BAR IS \&bar
!foo .ASSIGNA 0
! .AWHILE \&foo LT 2
! HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI AFTER
!foo .ASSIGNA \&foo + 1
! .AENDW
!bar .ASSIGNA \&bar + 1
! AND ITS NOW \&bar
! .AENDW
! HI BAR IS \&bar
HI BAR IS 1
!foo .ASSIGNA 0
! .AWHILE \&foo LT 2
! HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI AFTER
!foo .ASSIGNA \&foo + 1
! .AENDW
! HI BEFORE
HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI MEDIUM \&foo \&bar
HI MEDIUM 0 1
! .AREPEAT 1
! HI MEDIUM \&foo \&bar
! .AENDR
! HI MEDIUM \&foo \&bar
HI MEDIUM 0 1
! HI AFTER
HI AFTER
!foo .ASSIGNA \&foo + 1
! .AWHILE \&foo LT 2
! HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI AFTER
!foo .ASSIGNA \&foo + 1
! .AENDW
! HI BEFORE
HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI MEDIUM \&foo \&bar
HI MEDIUM 1 1
! .AREPEAT 1
! HI MEDIUM \&foo \&bar
! .AENDR
! HI MEDIUM \&foo \&bar
HI MEDIUM 1 1
! HI AFTER
HI AFTER
!foo .ASSIGNA \&foo + 1
! .AWHILE \&foo LT 2
! HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI AFTER
!foo .ASSIGNA \&foo + 1
! .AENDW
!bar .ASSIGNA \&bar + 1
! AND ITS NOW \&bar
AND ITS NOW 2
! .AWHILE \&bar LT 5
! HI BAR IS \&bar
!foo .ASSIGNA 0
! .AWHILE \&foo LT 2
! HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI AFTER
!foo .ASSIGNA \&foo + 1
! .AENDW
!bar .ASSIGNA \&bar + 1
! AND ITS NOW \&bar
! .AENDW
! HI BAR IS \&bar
HI BAR IS 2
!foo .ASSIGNA 0
! .AWHILE \&foo LT 2
! HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI AFTER
!foo .ASSIGNA \&foo + 1
! .AENDW
! HI BEFORE
HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI MEDIUM \&foo \&bar
HI MEDIUM 0 2
! .AREPEAT 1
! HI MEDIUM \&foo \&bar
! .AENDR
! HI MEDIUM \&foo \&bar
HI MEDIUM 0 2
! HI AFTER
HI AFTER
!foo .ASSIGNA \&foo + 1
! .AWHILE \&foo LT 2
! HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI AFTER
!foo .ASSIGNA \&foo + 1
! .AENDW
! HI BEFORE
HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI MEDIUM \&foo \&bar
HI MEDIUM 1 2
! .AREPEAT 1
! HI MEDIUM \&foo \&bar
! .AENDR
! HI MEDIUM \&foo \&bar
HI MEDIUM 1 2
! HI AFTER
HI AFTER
!foo .ASSIGNA \&foo + 1
! .AWHILE \&foo LT 2
! HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI AFTER
!foo .ASSIGNA \&foo + 1
! .AENDW
!bar .ASSIGNA \&bar + 1
! AND ITS NOW \&bar
AND ITS NOW 3
! .AWHILE \&bar LT 5
! HI BAR IS \&bar
!foo .ASSIGNA 0
! .AWHILE \&foo LT 2
! HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI AFTER
!foo .ASSIGNA \&foo + 1
! .AENDW
!bar .ASSIGNA \&bar + 1
! AND ITS NOW \&bar
! .AENDW
! HI BAR IS \&bar
HI BAR IS 3
!foo .ASSIGNA 0
! .AWHILE \&foo LT 2
! HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI AFTER
!foo .ASSIGNA \&foo + 1
! .AENDW
! HI BEFORE
HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI MEDIUM \&foo \&bar
HI MEDIUM 0 3
! .AREPEAT 1
! HI MEDIUM \&foo \&bar
! .AENDR
! HI MEDIUM \&foo \&bar
HI MEDIUM 0 3
! HI AFTER
HI AFTER
!foo .ASSIGNA \&foo + 1
! .AWHILE \&foo LT 2
! HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI AFTER
!foo .ASSIGNA \&foo + 1
! .AENDW
! HI BEFORE
HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI MEDIUM \&foo \&bar
HI MEDIUM 1 3
! .AREPEAT 1
! HI MEDIUM \&foo \&bar
! .AENDR
! HI MEDIUM \&foo \&bar
HI MEDIUM 1 3
! HI AFTER
HI AFTER
!foo .ASSIGNA \&foo + 1
! .AWHILE \&foo LT 2
! HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI AFTER
!foo .ASSIGNA \&foo + 1
! .AENDW
!bar .ASSIGNA \&bar + 1
! AND ITS NOW \&bar
AND ITS NOW 4
! .AWHILE \&bar LT 5
! HI BAR IS \&bar
!foo .ASSIGNA 0
! .AWHILE \&foo LT 2
! HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI AFTER
!foo .ASSIGNA \&foo + 1
! .AENDW
!bar .ASSIGNA \&bar + 1
! AND ITS NOW \&bar
! .AENDW
! HI BAR IS \&bar
HI BAR IS 4
!foo .ASSIGNA 0
! .AWHILE \&foo LT 2
! HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI AFTER
!foo .ASSIGNA \&foo + 1
! .AENDW
! HI BEFORE
HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI MEDIUM \&foo \&bar
HI MEDIUM 0 4
! .AREPEAT 1
! HI MEDIUM \&foo \&bar
! .AENDR
! HI MEDIUM \&foo \&bar
HI MEDIUM 0 4
! HI AFTER
HI AFTER
!foo .ASSIGNA \&foo + 1
! .AWHILE \&foo LT 2
! HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI AFTER
!foo .ASSIGNA \&foo + 1
! .AENDW
! HI BEFORE
HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI MEDIUM \&foo \&bar
HI MEDIUM 1 4
! .AREPEAT 1
! HI MEDIUM \&foo \&bar
! .AENDR
! HI MEDIUM \&foo \&bar
HI MEDIUM 1 4
! HI AFTER
HI AFTER
!foo .ASSIGNA \&foo + 1
! .AWHILE \&foo LT 2
! HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI AFTER
!foo .ASSIGNA \&foo + 1
! .AENDW
!bar .ASSIGNA \&bar + 1
! AND ITS NOW \&bar
AND ITS NOW 5
! .AWHILE \&bar LT 5
! HI BAR IS \&bar
!foo .ASSIGNA 0
! .AWHILE \&foo LT 2
! HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI AFTER
!foo .ASSIGNA \&foo + 1
! .AENDW
!bar .ASSIGNA \&bar + 1
! AND ITS NOW \&bar
! .AENDW
! .END

View File

@ -0,0 +1,389 @@
******** while.amp
! donkey
donkey
!bar .ASSIGNA 0
! .AWHILE \&bar LT 5
! HI BAR IS \&bar
!foo .ASSIGNA 0
! .AWHILE \&foo LT 2
! HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI AFTER
!foo .ASSIGNA \&foo + 1
! .AENDW
!bar .ASSIGNA \&bar + 1
! AND ITS NOW \&bar
! .AENDW
! HI BAR IS \&bar
HI BAR IS 0
!foo .ASSIGNA 0
! .AWHILE \&foo LT 2
! HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI AFTER
!foo .ASSIGNA \&foo + 1
! .AENDW
! HI BEFORE
HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI MEDIUM \&foo \&bar
HI MEDIUM 0 0
! .AREPEAT 1
! HI MEDIUM \&foo \&bar
! .AENDR
! HI MEDIUM \&foo \&bar
HI MEDIUM 0 0
! HI AFTER
HI AFTER
!foo .ASSIGNA \&foo + 1
! .AWHILE \&foo LT 2
! HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI AFTER
!foo .ASSIGNA \&foo + 1
! .AENDW
! HI BEFORE
HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI MEDIUM \&foo \&bar
HI MEDIUM 1 0
! .AREPEAT 1
! HI MEDIUM \&foo \&bar
! .AENDR
! HI MEDIUM \&foo \&bar
HI MEDIUM 1 0
! HI AFTER
HI AFTER
!foo .ASSIGNA \&foo + 1
! .AWHILE \&foo LT 2
! HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI AFTER
!foo .ASSIGNA \&foo + 1
! .AENDW
!bar .ASSIGNA \&bar + 1
! AND ITS NOW \&bar
AND ITS NOW 1
! .AWHILE \&bar LT 5
! HI BAR IS \&bar
!foo .ASSIGNA 0
! .AWHILE \&foo LT 2
! HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI AFTER
!foo .ASSIGNA \&foo + 1
! .AENDW
!bar .ASSIGNA \&bar + 1
! AND ITS NOW \&bar
! .AENDW
! HI BAR IS \&bar
HI BAR IS 1
!foo .ASSIGNA 0
! .AWHILE \&foo LT 2
! HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI AFTER
!foo .ASSIGNA \&foo + 1
! .AENDW
! HI BEFORE
HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI MEDIUM \&foo \&bar
HI MEDIUM 0 1
! .AREPEAT 1
! HI MEDIUM \&foo \&bar
! .AENDR
! HI MEDIUM \&foo \&bar
HI MEDIUM 0 1
! HI AFTER
HI AFTER
!foo .ASSIGNA \&foo + 1
! .AWHILE \&foo LT 2
! HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI AFTER
!foo .ASSIGNA \&foo + 1
! .AENDW
! HI BEFORE
HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI MEDIUM \&foo \&bar
HI MEDIUM 1 1
! .AREPEAT 1
! HI MEDIUM \&foo \&bar
! .AENDR
! HI MEDIUM \&foo \&bar
HI MEDIUM 1 1
! HI AFTER
HI AFTER
!foo .ASSIGNA \&foo + 1
! .AWHILE \&foo LT 2
! HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI AFTER
!foo .ASSIGNA \&foo + 1
! .AENDW
!bar .ASSIGNA \&bar + 1
! AND ITS NOW \&bar
AND ITS NOW 2
! .AWHILE \&bar LT 5
! HI BAR IS \&bar
!foo .ASSIGNA 0
! .AWHILE \&foo LT 2
! HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI AFTER
!foo .ASSIGNA \&foo + 1
! .AENDW
!bar .ASSIGNA \&bar + 1
! AND ITS NOW \&bar
! .AENDW
! HI BAR IS \&bar
HI BAR IS 2
!foo .ASSIGNA 0
! .AWHILE \&foo LT 2
! HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI AFTER
!foo .ASSIGNA \&foo + 1
! .AENDW
! HI BEFORE
HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI MEDIUM \&foo \&bar
HI MEDIUM 0 2
! .AREPEAT 1
! HI MEDIUM \&foo \&bar
! .AENDR
! HI MEDIUM \&foo \&bar
HI MEDIUM 0 2
! HI AFTER
HI AFTER
!foo .ASSIGNA \&foo + 1
! .AWHILE \&foo LT 2
! HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI AFTER
!foo .ASSIGNA \&foo + 1
! .AENDW
! HI BEFORE
HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI MEDIUM \&foo \&bar
HI MEDIUM 1 2
! .AREPEAT 1
! HI MEDIUM \&foo \&bar
! .AENDR
! HI MEDIUM \&foo \&bar
HI MEDIUM 1 2
! HI AFTER
HI AFTER
!foo .ASSIGNA \&foo + 1
! .AWHILE \&foo LT 2
! HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI AFTER
!foo .ASSIGNA \&foo + 1
! .AENDW
!bar .ASSIGNA \&bar + 1
! AND ITS NOW \&bar
AND ITS NOW 3
! .AWHILE \&bar LT 5
! HI BAR IS \&bar
!foo .ASSIGNA 0
! .AWHILE \&foo LT 2
! HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI AFTER
!foo .ASSIGNA \&foo + 1
! .AENDW
!bar .ASSIGNA \&bar + 1
! AND ITS NOW \&bar
! .AENDW
! HI BAR IS \&bar
HI BAR IS 3
!foo .ASSIGNA 0
! .AWHILE \&foo LT 2
! HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI AFTER
!foo .ASSIGNA \&foo + 1
! .AENDW
! HI BEFORE
HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI MEDIUM \&foo \&bar
HI MEDIUM 0 3
! .AREPEAT 1
! HI MEDIUM \&foo \&bar
! .AENDR
! HI MEDIUM \&foo \&bar
HI MEDIUM 0 3
! HI AFTER
HI AFTER
!foo .ASSIGNA \&foo + 1
! .AWHILE \&foo LT 2
! HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI AFTER
!foo .ASSIGNA \&foo + 1
! .AENDW
! HI BEFORE
HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI MEDIUM \&foo \&bar
HI MEDIUM 1 3
! .AREPEAT 1
! HI MEDIUM \&foo \&bar
! .AENDR
! HI MEDIUM \&foo \&bar
HI MEDIUM 1 3
! HI AFTER
HI AFTER
!foo .ASSIGNA \&foo + 1
! .AWHILE \&foo LT 2
! HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI AFTER
!foo .ASSIGNA \&foo + 1
! .AENDW
!bar .ASSIGNA \&bar + 1
! AND ITS NOW \&bar
AND ITS NOW 4
! .AWHILE \&bar LT 5
! HI BAR IS \&bar
!foo .ASSIGNA 0
! .AWHILE \&foo LT 2
! HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI AFTER
!foo .ASSIGNA \&foo + 1
! .AENDW
!bar .ASSIGNA \&bar + 1
! AND ITS NOW \&bar
! .AENDW
! HI BAR IS \&bar
HI BAR IS 4
!foo .ASSIGNA 0
! .AWHILE \&foo LT 2
! HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI AFTER
!foo .ASSIGNA \&foo + 1
! .AENDW
! HI BEFORE
HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI MEDIUM \&foo \&bar
HI MEDIUM 0 4
! .AREPEAT 1
! HI MEDIUM \&foo \&bar
! .AENDR
! HI MEDIUM \&foo \&bar
HI MEDIUM 0 4
! HI AFTER
HI AFTER
!foo .ASSIGNA \&foo + 1
! .AWHILE \&foo LT 2
! HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI AFTER
!foo .ASSIGNA \&foo + 1
! .AENDW
! HI BEFORE
HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI MEDIUM \&foo \&bar
HI MEDIUM 1 4
! .AREPEAT 1
! HI MEDIUM \&foo \&bar
! .AENDR
! HI MEDIUM \&foo \&bar
HI MEDIUM 1 4
! HI AFTER
HI AFTER
!foo .ASSIGNA \&foo + 1
! .AWHILE \&foo LT 2
! HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI AFTER
!foo .ASSIGNA \&foo + 1
! .AENDW
!bar .ASSIGNA \&bar + 1
! AND ITS NOW \&bar
AND ITS NOW 5
! .AWHILE \&bar LT 5
! HI BAR IS \&bar
!foo .ASSIGNA 0
! .AWHILE \&foo LT 2
! HI BEFORE
! .AREPEAT 2
! HI MEDIUM \&foo \&bar
! .AENDR
! HI AFTER
!foo .ASSIGNA \&foo + 1
! .AENDW
!bar .ASSIGNA \&bar + 1
! AND ITS NOW \&bar
! .AENDW
! .END