.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