Here is the code I'm using generated from Chilly Willy's test.s file from his experiments with the jrisc compiler to test the two jrisc builds of VASM(standard and motorola):
Code: Select all
;GCC for Atari Jaguar GPU/DSP (Jun 12 1995) (C)1994-95 Brainstorm
MACRO _RTS
load (ST),TMP
jump T,(TMP)
addqt #4,ST ;rts
ENDM
_test_start::
.GPU
.ORG $F03000
ST .REGEQU r18
FP .REGEQU r17
TMP .REGEQU r16
GT .CCDEF $15
gcc2_compiled_for_madmac:
;(.DATA)
.LONG
_global::
.DC.L 5
;(.TEXT)
.EVEN
_GetTest1::
subqt #4,ST
store FP,(ST)
move ST,FP ;link
subqt #8,ST
move FP,r1 ;movsi FP->r1
move FP,r2 ;movsi FP->r2
subqt #4,r2 ;isubqtsi3 r2-#4->r2
move r2,r3 ;movsi r2->r3
store r0,(r3) ;movsi r0->(r3)
move FP,r0 ;movsi FP->r0
move FP,r4 ;movsi FP->r4
subqt #8,r4 ;isubqtsi3 r4-#8->r4
move r4,r0 ;movsi r4->r0
moveq #0,r6 ;movsi #0->r6
store r6,(r0) ;movsi r6->(r0)
move FP,r0 ;movsi FP->r0
move FP,r4 ;movsi FP->r4
subqt #4,r4 ;isubqtsi3 r4-#4->r4
move r4,r0 ;movsi r4->r0
load (r0),r4 ;movsi (r0)->r4
moveq #9,r0 ;movsi #9->r0
cmp r4,r0 ;rcmpsi r4,r0
movei #L2,TMP
jump GT,(TMP)
nop ;jgt L2
move FP,r0 ;movsi FP->r0
move FP,r4 ;movsi FP->r4
subqt #8,r4 ;isubqtsi3 r4-#8->r4
move r4,r0 ;movsi r4->r0
movei #100,r6 ;movsi #100->r6
store r6,(r0) ;movsi r6->(r0)
movei #L3,TMP
jump T,(TMP)
nop ;jt L3
.EVEN
L2:
move FP,r0 ;movsi FP->r0
move FP,r4 ;movsi FP->r4
subqt #4,r4 ;isubqtsi3 r4-#4->r4
move r4,r0 ;movsi r4->r0
load (r0),r4 ;movsi (r0)->r4
moveq #9,r0 ;movsi #9->r0
cmp r4,r0 ;rcmpsi r4,r0
movei #L4,TMP
jump GT,(TMP)
nop ;jgt L4
move FP,r0 ;movsi FP->r0
move FP,r4 ;movsi FP->r4
subqt #8,r4 ;isubqtsi3 r4-#8->r4
move r4,r0 ;movsi r4->r0
moveq #10,r6 ;movsi #10->r6
store r6,(r0) ;movsi r6->(r0)
movei #L5,TMP
jump T,(TMP)
nop ;jt L5
.EVEN
L4:
move FP,r0 ;movsi FP->r0
move FP,r4 ;movsi FP->r4
subqt #4,r4 ;isubqtsi3 r4-#4->r4
move r4,r0 ;movsi r4->r0
load (r0),r4 ;movsi (r0)->r4
cmpq #0,r4 ;tstsi r4
movei #L6,TMP
jump EQ,(TMP)
nop ;jeq L6
move FP,r0 ;movsi FP->r0
move FP,r4 ;movsi FP->r4
subqt #8,r4 ;isubqtsi3 r4-#8->r4
move r4,r0 ;movsi r4->r0
moveq #1,r6 ;movsi #1->r6
store r6,(r0) ;movsi r6->(r0)
L6:
L5:
L3:
move FP,r0 ;movsi FP->r0
move FP,r4 ;movsi FP->r4
subqt #8,r4 ;isubqtsi3 r4-#8->r4
move r4,r5 ;movsi r4->r5
load (r5),r0 ;movsi (r5)->r0
movei #L1,TMP
jump T,(TMP)
nop ;jt L1
.EVEN
L1:
move FP,ST
load (ST),FP
addqt #4,ST ;unlk
_RTS
.EVEN
_GetTest2::
subqt #4,ST
store FP,(ST)
move ST,FP ;link
subqt #8,ST
move FP,r1 ;movsi FP->r1
move FP,r2 ;movsi FP->r2
subqt #4,r2 ;isubqtsi3 r2-#4->r2
move r2,r3 ;movsi r2->r3
store r0,(r3) ;movsi r0->(r3)
move FP,r0 ;movsi FP->r0
move FP,r4 ;movsi FP->r4
subqt #8,r4 ;isubqtsi3 r4-#8->r4
move r4,r0 ;movsi r4->r0
moveq #0,r6 ;movsi #0->r6
store r6,(r0) ;movsi r6->(r0)
move FP,r0 ;movsi FP->r0
move FP,r4 ;movsi FP->r4
subqt #4,r4 ;isubqtsi3 r4-#4->r4
move r4,r5 ;movsi r4->r5
load (r5),r0 ;movsi (r5)->r0
moveq #9,r4 ;movsi #9->r4
cmp r4,r0 ;cmpsi r4,r0
movei #L18,TMP
jump GT,(TMP)
nop ;jgt L18
moveq #1,r4 ;movsi #1->r4
cmp r4,r0 ;cmpsi r4,r0
movei #L18,TMP
jump MI,(TMP)
nop ;jlt L18
movei #L9,TMP
jump T,(TMP)
nop ;jt L9
.EVEN
L9:
L10:
L11:
L12:
L13:
L14:
L15:
L16:
L17:
move FP,r0 ;movsi FP->r0
move FP,r4 ;movsi FP->r4
subqt #8,r4 ;isubqtsi3 r4-#8->r4
move r4,r0 ;movsi r4->r0
moveq #1,r6 ;movsi #1->r6
store r6,(r0) ;movsi r6->(r0)
movei #L8,TMP
jump T,(TMP)
nop ;jt L8
.EVEN
L18:
move FP,r0 ;movsi FP->r0
move FP,r4 ;movsi FP->r4
subqt #8,r4 ;isubqtsi3 r4-#8->r4
move r4,r0 ;movsi r4->r0
moveq #10,r6 ;movsi #10->r6
store r6,(r0) ;movsi r6->(r0)
L8:
move FP,r0 ;movsi FP->r0
move FP,r4 ;movsi FP->r4
subqt #8,r4 ;isubqtsi3 r4-#8->r4
move r4,r5 ;movsi r4->r5
load (r5),r0 ;movsi (r5)->r0
movei #L7,TMP
jump T,(TMP)
nop ;jt L7
.EVEN
L7:
move FP,ST
load (ST),FP
addqt #4,ST ;unlk
_RTS
.EVEN
_Test3::
subqt #4,ST
store FP,(ST)
move ST,FP ;link
subqt #32,ST
subqt #8,ST
move ST,r14
store r19,(ST)
store r20,(r14+1)
store r21,(r14+2)
store r22,(r14+3)
store r23,(r14+4)
store r24,(r14+5)
move FP,r19 ;movsi FP->r19
move FP,r20 ;movsi FP->r20
subqt #4,r20 ;isubqtsi3 r20-#4->r20
move r20,r21 ;movsi r20->r21
store r0,(r21) ;movsi r0->(r21)
move FP,r0 ;movsi FP->r0
move FP,r1 ;movsi FP->r1
subqt #8,r1 ;isubqtsi3 r1-#8->r1
move r1,r0 ;movsi r1->r0
moveq #0,r3 ;movsi #0->r3
store r3,(r0) ;movsi r3->(r0)
move FP,r0 ;movsi FP->r0
move FP,r1 ;movsi FP->r1
subqt #16,r1 ;isubqtsi3 r1-#16->r1
move r1,r0 ;movsi r1->r0
moveq #0,r3 ;movsi #0->r3
store r3,(r0) ;movsi r3->(r0)
L21:
move FP,r0 ;movsi FP->r0
move FP,r1 ;movsi FP->r1
subqt #8,r1 ;isubqtsi3 r1-#8->r1
move r1,r0 ;movsi r1->r0
move FP,r1 ;movsi FP->r1
move FP,r2 ;movsi FP->r2
subqt #4,r2 ;isubqtsi3 r2-#4->r2
move r2,r1 ;movsi r2->r1
load (r0),r0 ;movsi (r0)->r0
load (r1),r1 ;movsi (r1)->r1
cmp r1,r0 ;cmpsi r1,r0
movei #L24,TMP
jump MI,(TMP)
nop ;jlt L24
movei #L22,TMP
jump T,(TMP)
nop ;jt L22
.EVEN
L24:
move FP,r0 ;movsi FP->r0
move FP,r1 ;movsi FP->r1
subqt #12,r1 ;isubqtsi3 r1-#12->r1
move r1,r0 ;movsi r1->r0
move FP,r1 ;movsi FP->r1
move FP,r2 ;movsi FP->r2
subqt #8,r2 ;isubqtsi3 r2-#8->r2
move r2,r1 ;movsi r2->r1
moveq #1,r2 ;movsi #1->r2
load (r1),r1 ;movsi (r1)->r1
neg r1 ;negsi2 r1->r1
sha r1,r2 ;iashlsi3 r2<<r1->r2
neg r1 ;negsi2 r1->r1
store r2,(r0) ;movsi r2->(r0)
move FP,r0 ;movsi FP->r0
move FP,r1 ;movsi FP->r1
subqt #16,r1 ;isubqtsi3 r1-#16->r1
move r1,r22 ;movsi r1->r22
move ST,r0 ;movsi ST->r0
move FP,r1 ;movsi FP->r1
move FP,r0 ;movsi FP->r0
subqt #8,r0 ;isubqtsi3 r0-#8->r0
move r0,r1 ;movsi r0->r1
load (r1),r0 ;movsi (r1)->r0
movei #_GetTest1,r23 ;movsi #_GetTest1->r23
move PC,TMP
subqt #4,ST
addqt #10,TMP
jump T,(r23)
store TMP,(ST) ;call r23->r0
move r0,r23 ;movsi r0->r23
move ST,r0 ;movsi ST->r0
move FP,r1 ;movsi FP->r1
move FP,r0 ;movsi FP->r0
subqt #12,r0 ;isubqtsi3 r0-#12->r0
move r0,r1 ;movsi r0->r1
load (r1),r0 ;movsi (r1)->r0
movei #_GetTest2,r24 ;movsi #_GetTest2->r24
move PC,TMP
subqt #4,ST
addqt #10,TMP
jump T,(r24)
store TMP,(ST) ;call r24->r0
move FP,r1 ;movsi FP->r1
move FP,r2 ;movsi FP->r2
subqt #16,r2 ;isubqtsi3 r2-#16->r2
move r2,r1 ;movsi r2->r1
add r23,r0 ;iaddsi3 r23+r0->r0
load (r1),r1 ;movsi (r1)->r1
add r1,r0 ;iaddsi3 r1+r0->r0
store r0,(r22) ;movsi r0->(r22)
L23:
move FP,r0 ;movsi FP->r0
move FP,r1 ;movsi FP->r1
subqt #8,r1 ;isubqtsi3 r1-#8->r1
move r1,r0 ;movsi r1->r0
move FP,r1 ;movsi FP->r1
move FP,r2 ;movsi FP->r2
subqt #8,r2 ;isubqtsi3 r2-#8->r2
move r2,r0 ;movsi r2->r0
move FP,r1 ;movsi FP->r1
move FP,r2 ;movsi FP->r2
subqt #8,r2 ;isubqtsi3 r2-#8->r2
move r2,r1 ;movsi r2->r1
load (r1),r2 ;movsi (r1)->r2
move r2,r1 ;movsi r2->r1
addqt #1,r1 ;iaddqtsi3 #1+r1->r1
move r1,r2 ;movsi r1->r2
store r2,(r0) ;movsi r2->(r0)
movei #L21,TMP
jump T,(TMP)
nop ;jt L21
.EVEN
L22:
move FP,r0 ;movsi FP->r0
move FP,r1 ;movsi FP->r1
subqt #16,r1 ;isubqtsi3 r1-#16->r1
move r1,r2 ;movsi r1->r2
load (r2),r0 ;movsi (r2)->r0
movei #L20,TMP
jump T,(TMP)
nop ;jt L20
.EVEN
L20:
move ST,r14
load (ST),r19
load (r14+1),r20
load (r14+2),r21
load (r14+3),r22
load (r14+4),r23
load (r14+5),r24
move FP,ST
load (ST),FP
addqt #4,ST ;unlk
_RTS
.LONG
.68000
_test_end::
_test_size .EQU *-_test_start
.GLOBL _test_size
.IF _test_size>$1000
.PRINT "Code size (",/l/x _test_size,") is over $1000"
.FAIL
.ENDIF
I think I can get rid of the 'multiple input file' error.
And for now there we are.
Interesting to note the assemblers are choking on different things. the motorola syntax seems to get farther before it hits an error.
I know nothing about assembly unfortunately.