458 lines
		
	
	
	
		
			5.8 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			458 lines
		
	
	
	
		
			5.8 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| .sect .text
 | |
| .define _main
 | |
| .define _main2
 | |
| .define _xxx
 | |
| ! integer arithmetic and logical instructions
 | |
| 
 | |
| _main:
 | |
| .data2 0x0
 | |
| adawi	r0, r1
 | |
| addb2	r0,r1
 | |
| addb3	r0,r2,r4
 | |
| addw2	r0,r1
 | |
| addw3	r0,r2,r4
 | |
| addl2	r0,r1
 | |
| addl3	r0,r2,r4
 | |
| adwc	r0, r1
 | |
| ashl	r0, r1, r2
 | |
| ashq	r0, r1, r2
 | |
| bicb2	r0,r1
 | |
| bicb3	r0,r2,r4
 | |
| bicw2	r0,r1
 | |
| bicw3	r0,r2,r4
 | |
| bicl2	r0,r1
 | |
| bicl3	r0,r2,r4
 | |
| bisb2	r0,r1
 | |
| bisb3	r0,r2,r4
 | |
| bisw2	r0,r1
 | |
| bisw3	r0,r2,r4
 | |
| bisl2	r0,r1
 | |
| bisl3	r0,r2,r4
 | |
| bitb	r0, r1
 | |
| bitw	r0, r1
 | |
| bitl	r0, r1
 | |
| clrb	r0
 | |
| clrw	r0
 | |
| clrl	r0
 | |
| clrq	r0
 | |
| clro	r0
 | |
| cmpb	r0, r1
 | |
| cmpw	r0, r1
 | |
| cmpl	r0, r1
 | |
| cvtbw	r0, r1
 | |
| cvtbl	r0, r1
 | |
| cvtwb	r0, r1
 | |
| cvtwl	r0, r1
 | |
| cvtlb	r0, r1
 | |
| cvtlw	r0, r1
 | |
| decb	r0
 | |
| decw	r0
 | |
| decl	r0
 | |
| divb2	r0,r1
 | |
| divb3	r0,r2,r4
 | |
| divw2	r0,r1
 | |
| divw3	r0,r2,r4
 | |
| divl2	r0,r1
 | |
| divl3	r0,r2,r4
 | |
| ediv	r0,r1,r2,r3
 | |
| emul	r0,r1,r2,r3
 | |
| incb	r0
 | |
| incw	r0
 | |
| incl	r0
 | |
| mcomb	r0, r1
 | |
| mcomw	r0, r1
 | |
| mcoml	r0, r1
 | |
| mnegb	r0, r1
 | |
| mnegw	r0, r1
 | |
| mnegl	r0, r1
 | |
| movb	r0, r1
 | |
| movw	r0, r1
 | |
| movl	r0, r1
 | |
| movq	r0, r1
 | |
| movo	r0, r1
 | |
| movzbw	r0, r1
 | |
| movzbl	r0, r1
 | |
| movzwl	r0, r1
 | |
| mulb2	r0,r1
 | |
| mulb3	r0,r2,r4
 | |
| mulw2	r0,r1
 | |
| mulw3	r0,r2,r4
 | |
| mull2	r0,r1
 | |
| mull3	r0,r2,r4
 | |
| pushl	r0
 | |
| pushl	$1
 | |
| rotl	r0, r1, r2
 | |
| sbwc	r0, r1
 | |
| subb2	r0,r1
 | |
| subb3	r0,r2,r4
 | |
| subw2	r0,r1
 | |
| subw3	r0,r2,r4
 | |
| subl2	r0,r1
 | |
| subl3	r0,r2,r4
 | |
| tstb	r0
 | |
| tstw	r0
 | |
| tstl	r0
 | |
| xorb2	r0,r1
 | |
| xorb3	r0,r2,r4
 | |
| xorw2	r0,r1
 | |
| xorw3	r0,r2,r4
 | |
| xorl2	r0,r1
 | |
| xorl3	r0,r2,r4
 | |
| 
 | |
| !* Address instructions */
 | |
| 
 | |
| movab	(sp),r0
 | |
| movaw	(sp),r0
 | |
| moval	(sp),r0
 | |
| movaf	(sp),r0
 | |
| movaq	(sp),r0
 | |
| movad	(sp),r0
 | |
| movag	(sp),r0
 | |
| movah	(sp),r0
 | |
| movao	(sp),r0
 | |
| pushab	(sp)
 | |
| pushaw	(sp)
 | |
| pushal	(sp)
 | |
| pushaf	(sp)
 | |
| pushaq	(sp)
 | |
| pushad	(sp)
 | |
| pushag	(sp)
 | |
| pushah	(sp)
 | |
| pushao	(sp)
 | |
| 
 | |
| !* Variable length bit-field instructions */
 | |
| 
 | |
| cmpv	r0,r1,r2,r3
 | |
| cmpzv	r0,r1,r2,r3
 | |
| extv	r0,r1,r2,r3
 | |
| extzv	r0,r1,r2,r3
 | |
| ffc	r0,r1,r2,r3
 | |
| ffs	r0,r1,r2,r3
 | |
| insv	r0,r1,r2,r3
 | |
| 
 | |
| !* Control instructions */
 | |
| 
 | |
| acbb	r0,r1,r2,_main
 | |
| acbw	r0,r1,r2,_main
 | |
| acbl	r0,r1,r2,_main
 | |
| acbf	r0,r1,r2,_main
 | |
| acbd	r0,r1,r2,_main
 | |
| acbg	r0,r1,r2,_main
 | |
| acbh	r0,r1,r2,_main
 | |
| aobleq	r0, r1, 1f
 | |
| 1:
 | |
| aoblss	r0, r1, 1f
 | |
| 1:
 | |
| bgtr	1f
 | |
| 1:
 | |
| bleq	1f
 | |
| 1:
 | |
| bneq	1f
 | |
| 1:
 | |
| bnequ	1f
 | |
| 1:
 | |
| beql	1f
 | |
| 1:
 | |
| beqlu	1f
 | |
| 1:
 | |
| bgeq	1f
 | |
| 1:
 | |
| blss	1f
 | |
| 1:
 | |
| bgtru	1f
 | |
| 1:
 | |
| blequ	1f
 | |
| 1:
 | |
| bvc	1f
 | |
| 1:
 | |
| bvs	1f
 | |
| 1:
 | |
| bgequ	1f
 | |
| 1:
 | |
| bcc	1f
 | |
| 1:
 | |
| blssu	1f
 | |
| 1:
 | |
| bcs	1f
 | |
| 1:
 | |
| bbs	r0, r1, 1f
 | |
| 1:
 | |
| bbc	r0, r1, 1f
 | |
| 1:
 | |
| bbss	r0, r1, 1f
 | |
| 1:
 | |
| bbcs	r0, r1, 1f
 | |
| 1:
 | |
| bbsc	r0, r1, 1f
 | |
| 1:
 | |
| bbcc	r0, r1, 1f
 | |
| 1:
 | |
| bbssi	r0, r1, 1f
 | |
| 1:
 | |
| bbcci	r0, r1, 1f
 | |
| 1:
 | |
| blbs	r0,1f
 | |
| blbc	r0,1f
 | |
| 1:
 | |
| jgtr	_main
 | |
| jleq	_main
 | |
| jneq	_main
 | |
| jnequ	_main
 | |
| jeql	_main
 | |
| jeqlu	_main
 | |
| jgeq	_main
 | |
| jlss	_main
 | |
| jgtru	_main
 | |
| jlequ	_main
 | |
| jvc	_main
 | |
| jvs	_main
 | |
| jgequ	_main
 | |
| jcc	_main
 | |
| jlssu	_main
 | |
| jcs	_main
 | |
| jlbs	r0, _main
 | |
| jlbc	r0, _main
 | |
| jbs	r0, r1, _main
 | |
| jbc	r0, r1, _main
 | |
| jbss	r0, r1, _main
 | |
| jbcs	r0, r1, _main
 | |
| jbsc	r0, r1, _main
 | |
| jbcc	r0, r1, _main
 | |
| jbssi	r0, r1, _main
 | |
| jbcci	r0, r1, _main
 | |
| br	_main
 | |
| br	_main2
 | |
| brb	1f
 | |
| 1:
 | |
| brw	1f
 | |
| 1:
 | |
| jbr	_main
 | |
| jbr	_main2
 | |
| bsb	1f
 | |
| 1:
 | |
| caseb	r0, r1, r2
 | |
| casew	r0, r1, r2
 | |
| casel	r0, r1, r2
 | |
| jmp	_main
 | |
| jsb	_main
 | |
| rsb
 | |
| sobgeq	r0, 1f
 | |
| sobgtr	r0, 1f
 | |
| 1:
 | |
| 
 | |
| !* Procedure call instructions */
 | |
| 
 | |
| callg	(sp),_main
 | |
| calls	$2, _main
 | |
| ret
 | |
| 
 | |
| !* Miscellaneous instructions */
 | |
| 
 | |
| bicpsw	r0
 | |
| bispsw	r0
 | |
| bpt
 | |
| halt
 | |
| index	r0,r1,r2,r3,r4,r5
 | |
| movpsl	r0
 | |
| nop
 | |
| popr	r0
 | |
| pushr	r0
 | |
| xfc
 | |
| 
 | |
| !* Queue instructions */
 | |
| 
 | |
| insqhi	(sp), _main
 | |
| insqti	(sp), _main
 | |
| insque	(sp), _main
 | |
| remqhi	(sp), _main
 | |
| remqti	(sp), _main
 | |
| remque	(sp), _main
 | |
| 
 | |
| !* Floating point instructions */
 | |
| 
 | |
| addf2	r0,r1
 | |
| addf3	r0,r2,r4
 | |
| addd2	r0,r1
 | |
| addd3	r0,r2,r4
 | |
| addg2	r0,r1
 | |
| addg3	r0,r2,r4
 | |
| addh2	r0,r1
 | |
| addh3	r0,r2,r4
 | |
| clrf	r0
 | |
| clrd	r0
 | |
| clrg	r0
 | |
| clrh	r0
 | |
| cmpf	r0,r2
 | |
| cmpd	r0,r2
 | |
| cmpg	r0,r2
 | |
| cmph	r0,r2
 | |
| cvtbf	r0,r2
 | |
| cvtbd	r0,r2
 | |
| cvtbg	r0,r2
 | |
| cvtbh	r0,r2
 | |
| cvtwf	r0,r2
 | |
| cvtwd	r0,r2
 | |
| cvtwg	r0,r2
 | |
| cvtwh	r0,r2
 | |
| cvtlf	r0,r2
 | |
| cvtld	r0,r2
 | |
| cvtlg	r0,r2
 | |
| cvtlh	r0,r2
 | |
| cvtfb	r0,r2
 | |
| cvtdb	r0,r2
 | |
| cvtgb	r0,r2
 | |
| cvthb	r0,r2
 | |
| cvtfw	r0,r2
 | |
| cvtdw	r0,r2
 | |
| cvtgw	r0,r2
 | |
| cvthw	r0,r2
 | |
| cvtfl	r0,r2
 | |
| cvtdl	r0,r2
 | |
| cvtgl	r0,r2
 | |
| cvthl	r0,r2
 | |
| cvtrfl	r0,r2
 | |
| cvtrdl	r0,r2
 | |
| cvtrgl	r0,r2
 | |
| cvtrhl	r0,r2
 | |
| cvtfd	r0,r2
 | |
| cvtfg	r0,r2
 | |
| cvtfh	r0,r2
 | |
| cvtdf	r0,r2
 | |
| cvtdh	r0,r2
 | |
| cvtgf	r0,r2
 | |
| cvtgh	r0,r2
 | |
| cvthf	r0,r2
 | |
| cvthd	r0,r2
 | |
| cvthg	r0,r2
 | |
| divf2	r0,r1
 | |
| divf3	r0,r2,r4
 | |
| divd2	r0,r1
 | |
| divd3	r0,r2,r4
 | |
| divg2	r0,r1
 | |
| divg3	r0,r2,r4
 | |
| divh2	r0,r1
 | |
| divh3	r0,r2,r4
 | |
| emodf	(r0),(r1),(r2),(r3),(r4)
 | |
| emodd	(r0),(r1),(r2),(r3),(r4)
 | |
| emodg	(r0),(r1),(r2),(r3),(r4)
 | |
| emodh	(r0),(r1),(r2),(r3),(r4)
 | |
| mnegf	r0,r2
 | |
| mnegd	r0,r2
 | |
| mnegg	r0,r2
 | |
| mnegh	r0,r2
 | |
| movf	r0,r2
 | |
| movd	r0,r2
 | |
| movg	r0,r2
 | |
| movh	r0,r2
 | |
| mulf2	r0,r1
 | |
| mulf3	r0,r2,r4
 | |
| muld2	r0,r1
 | |
| muld3	r0,r2,r4
 | |
| mulg2	r0,r1
 | |
| mulg3	r0,r2,r4
 | |
| mulh2	r0,r1
 | |
| mulh3	r0,r2,r4
 | |
| polyf	r0,r2,(sp)
 | |
| polyd	r0,r2,(sp)
 | |
| polyg	r0,r2,(sp)
 | |
| polyh	r0,r2,(sp)
 | |
| subf2	r0,r1
 | |
| subf3	r0,r2,r4
 | |
| subd2	r0,r1
 | |
| subd3	r0,r2,r4
 | |
| subg2	r0,r1
 | |
| subg3	r0,r2,r4
 | |
| subh2	r0,r1
 | |
| subh3	r0,r2,r4
 | |
| tstf	r0
 | |
| tstd	r0
 | |
| tstg	r0
 | |
| tsth	r0
 | |
| 
 | |
| !* Character string instructions */
 | |
| 
 | |
| cmpc3	r0,(sp),(r1)
 | |
| cmpc5	(r0),(r1),(r2),(r3),(r4)
 | |
| locc	(r0),(r1),(r2)
 | |
| matchc	(r0),(r1),(r2),(r3)
 | |
| movc3	r0,(sp),(r1)
 | |
| movc5	(r0),(r1),(r2),(r3),(r4)
 | |
| movtc	(r0),(r1),(r2),(r3),(r4),(r4)
 | |
| movtuc	(r0),(r1),(r2),(r3),(r4),(r4)
 | |
| scanc	(r0),(r1),(r2),(r3)
 | |
| skpc	r0,(sp),(r1)
 | |
| spanc	(r0),(r1),(r2),(r3)
 | |
| 
 | |
| !* Cyclic redundancy check instructions */
 | |
| 
 | |
| crc	(r0),(r1),(r2),(r3)
 | |
| 
 | |
| !* Decimal string instructions */
 | |
| 
 | |
| addp4	(r0),(r1),(r2),(r3)
 | |
| addp6	(r0),(r1),(r2),(r3),(r4),(r4)
 | |
| ashp	(r0),(r1),(r2),(r3),(r4),(r4)
 | |
| cmpp3	r0,(sp),(r1)
 | |
| cmpp4	(r0),(r1),(r2),(r3)
 | |
| cvtlp	(r0),(r1),(r2)
 | |
| cvtpl	(r0),(r1),(r2)
 | |
| cvtps	(r0),(r1),(r2),(r3)
 | |
| cvtpt	(r0),(r1),(r2),(r3),(r4)
 | |
| cvtsp	(r0),(r1),(r2),(r3)
 | |
| cvttp	(r0),(r1),(r2),(r3),(r4)
 | |
| divp	(r0),(r1),(r2),(r3),(r4),(r4)
 | |
| movp	(r0),(r1),(r2)
 | |
| mulp	(r0),(r1),(r2),(r3),(r4),(r4)
 | |
| subp4	(r0),(r1),(r2),(r3)
 | |
| subp6	(r0),(r1),(r2),(r3),(r4),(r4)
 | |
| 
 | |
| !* Edit instruction */
 | |
| 
 | |
| editpc	(r0),(r1),(r2),(r3)
 | |
| 
 | |
| !* Other VAX-11 instructions */
 | |
| 
 | |
| bugw	_main
 | |
| bugl	_main
 | |
| 
 | |
| prober	(r0),(r1),(r2)
 | |
| probew	(r0),(r1),(r2)
 | |
| 
 | |
| rei
 | |
| chmk	r0
 | |
| chme	r0
 | |
| chms	r0
 | |
| chmu	r0
 | |
| 
 | |
| ldpctx
 | |
| svpctx
 | |
| mtpr	r0,r1
 | |
| mfpr	r0,r1
 | |
| 
 | |
| ! test some addressing modes
 | |
| _main2:
 | |
| .data2 0x0
 | |
| pushal	_xxx
 | |
| pushal	_main
 | |
| pushal	_main2
 | |
| pushal	*_xxx
 | |
| pushal	*_main
 | |
| pushal	*_main2
 | |
| movl	$_xxx,-(sp)
 | |
| movl	$_main2,-(sp)
 | |
| movl	*$_main2,-(sp)
 | |
| movl	(sp)+,r9
 | |
| movl	*(sp)+,r9
 | |
| movl	(r0),r9
 | |
| movl	12(r0),r9
 | |
| movl	*12(r0),r9
 | |
| movl	_xxx(r0),r9
 | |
| movl	*_xxx(r0),r9
 | |
| movl	*_xxx(r0)[r1],r9
 | |
| movb	*_xxx(r0)[r1],r9
 | |
| movw	*_xxx(r0)[r1],r9
 | |
| 
 | |
| 
 | |
| .sect .rom
 | |
| _xxx:
 | |
| 	.data2 0
 |