.sect .text ; .sect .rom ; .sect .data ; .sect .bss ; .sect .text ! test for Motorola MC68881 floating point processor instructions ! compare result of disassembled output with source. .define _m_a_i_n _m_a_i_n: blablabla: ! dyadic instructions fadd.l 12(a6),fp0 fadd fp0,fp1 fcmp.l 12(a6),fp0 fcmp fp0,fp1 fdiv.l 12(a6),fp0 fdiv fp0,fp1 fmod.l 12(a6),fp0 fmod fp0,fp1 fmul.l 12(a6),fp0 fmul fp0,fp1 frem.l 12(a6),fp0 frem fp0,fp1 fscale.l 12(a6),fp0 fscale fp0,fp1 fsgldiv.l 12(a6),fp0 fsgldiv fp0,fp1 fsglmul.l 12(a6),fp0 fsglmul fp0,fp1 fsub.l 12(a6),fp0 fsub fp0,fp1 !monadic instructions fabs.p 12(a6),fp1 fabs.x fp1,fp2 fabs fp1 facos.p 12(a6),fp1 facos.x fp1,fp2 facos fp1 fasin.p 12(a6),fp1 fasin.x fp1,fp2 fasin fp1 fatan.p 12(a6),fp1 fatan.x fp1,fp2 fatan fp1 fatanh.p 12(a6),fp1 fatanh.x fp1,fp2 fatanh fp1 fcos.p 12(a6),fp1 fcos.x fp1,fp2 fcos fp1 fcosh.p 12(a6),fp1 fcosh.x fp1,fp2 fcosh fp1 fetox.p 12(a6),fp1 fetox.x fp1,fp2 fetox fp1 fetoxm1.p 12(a6),fp1 fetoxm1.x fp1,fp2 fetoxm1 fp1 fgetexp.p 12(a6),fp1 fgetexp.x fp1,fp2 fgetexp fp1 fgetman.p 12(a6),fp1 fgetman.x fp1,fp2 fgetman fp1 fint.p 12(a6),fp1 fint.x fp1,fp2 fint fp1 fintrz.p 12(a6),fp1 fintrz.x fp1,fp2 fintrz fp1 flogn.p 12(a6),fp1 flogn.x fp1,fp2 flogn fp1 flognp1.p 12(a6),fp1 flognp1.x fp1,fp2 flognp1 fp1 flog10.p 12(a6),fp1 flog10.x fp1,fp2 flog10 fp1 flog2.p 12(a6),fp1 flog2.x fp1,fp2 flog2 fp1 fneg.p 12(a6),fp1 fneg.x fp1,fp2 fneg fp1 fsin.p 12(a6),fp1 fsin.x fp1,fp2 fsin fp1 fsinh.p 12(a6),fp1 fsinh.x fp1,fp2 fsinh fp1 fsqrt.p 12(a6),fp1 fsqrt.x fp1,fp2 fsqrt fp1 ftan.p 12(a6),fp1 ftan.x fp1,fp2 ftan fp1 ftanh.p 12(a6),fp1 ftanh.x fp1,fp2 ftanh fp1 ftentox.p 12(a6),fp1 ftentox.x fp1,fp2 ftentox fp1 ftwotox.p 12(a6),fp1 ftwotox.x fp1,fp2 ftwotox fp1 !sincos fsincos.s 12(a6),fp0:fp1 fsincos.x fp2,fp0:fp1 !some moves fmove.l 12(a6),fp0 fmove.l fp1,12(a6) fmove.p fp0,12(a6){d0} fmove.p fp0,12(a6){#4} fmove.l 12(a6),fpcr !fmove.l a0,fpcr ! error fmove.l a0,fpiar fmovecr #1,fp1 !fmovem.x d1,(a0)+ ! error fmovem.x d1,-(a0) fmovem.x fp0-fp3/fp5,-(a0) !fmovem.x -(a0),fp0-fp3/fp5 ! error fmovem.x (a0)+,fp0-fp3/fp5 !some branches fbeq blablabla fbne blablabla fbgt blablabla fbngt blablabla fbge blablabla fbnge blablabla fblt blablabla fbnlt blablabla fble blablabla fbnle blablabla fbgl blablabla fbngl blablabla fbgle blablabla fbngle blablabla fbogt blablabla fbule blablabla fboge blablabla fbult blablabla fbolt blablabla fbuge blablabla fbole blablabla fbugt blablabla fbogl blablabla fbueq blablabla fbor blablabla fbun blablabla fbf blablabla fbt blablabla fbsf blablabla fbst blablabla fbseq blablabla fbsne blablabla fdbgl d4,blablabla !nop fnop !fscc fsult d4 !ftst ftst.p 12(a6) ftst fp0 !save/restore fsave 12(a6) ! fsave (a5)+ ! error frestore 12(a6) ! frestore -(a5) ! error !trap ftrapeq ftrapeq.l #4 ftrapeq.w #4