|
|
@@ -0,0 +1,282 @@
|
|
|
+# eight queens program
|
|
|
+# generated by minic
|
|
|
+
|
|
|
+export function w $chk(w %t0, w %t1) {
|
|
|
+@l0
|
|
|
+ %x =l alloc4 4
|
|
|
+ storew %t0, %x
|
|
|
+ %y =l alloc4 4
|
|
|
+ storew %t1, %y
|
|
|
+ %i =l alloc4 4
|
|
|
+ %r =l alloc4 4
|
|
|
+ storew 0, %i
|
|
|
+ storew 0, %r
|
|
|
+@l1
|
|
|
+ %t6 =w loadw %i
|
|
|
+ %t7 =w loadw $glo1
|
|
|
+ %t5 =w csltw %t6, %t7
|
|
|
+ jnz %t5, @l2, @l3
|
|
|
+@l2
|
|
|
+ %t10 =w loadw %r
|
|
|
+ %t15 =l loadl $glo3
|
|
|
+ %t16 =w loadw %x
|
|
|
+ %t17 =l extsw %t16
|
|
|
+ %t18 =l mul 8, %t17
|
|
|
+ %t14 =l add %t15, %t18
|
|
|
+ %t13 =l loadl %t14
|
|
|
+ %t19 =w loadw %i
|
|
|
+ %t20 =l extsw %t19
|
|
|
+ %t21 =l mul 4, %t20
|
|
|
+ %t12 =l add %t13, %t21
|
|
|
+ %t11 =w loadw %t12
|
|
|
+ %t9 =w add %t10, %t11
|
|
|
+ storew %t9, %r
|
|
|
+ %t24 =w loadw %r
|
|
|
+ %t29 =l loadl $glo3
|
|
|
+ %t30 =w loadw %i
|
|
|
+ %t31 =l extsw %t30
|
|
|
+ %t32 =l mul 8, %t31
|
|
|
+ %t28 =l add %t29, %t32
|
|
|
+ %t27 =l loadl %t28
|
|
|
+ %t33 =w loadw %y
|
|
|
+ %t34 =l extsw %t33
|
|
|
+ %t35 =l mul 4, %t34
|
|
|
+ %t26 =l add %t27, %t35
|
|
|
+ %t25 =w loadw %t26
|
|
|
+ %t23 =w add %t24, %t25
|
|
|
+ storew %t23, %r
|
|
|
+ %t39 =w loadw %x
|
|
|
+ %t40 =w loadw %i
|
|
|
+ %t38 =w add %t39, %t40
|
|
|
+ %t41 =w loadw $glo1
|
|
|
+ %t37 =w csltw %t38, %t41
|
|
|
+ %t44 =w loadw %y
|
|
|
+ %t45 =w loadw %i
|
|
|
+ %t43 =w add %t44, %t45
|
|
|
+ %t46 =w loadw $glo1
|
|
|
+ %t42 =w csltw %t43, %t46
|
|
|
+ %t36 =w and %t37, %t42
|
|
|
+ jnz %t36, @l4, @l5
|
|
|
+@l4
|
|
|
+ %t49 =w loadw %r
|
|
|
+ %t54 =l loadl $glo3
|
|
|
+ %t56 =w loadw %x
|
|
|
+ %t57 =w loadw %i
|
|
|
+ %t55 =w add %t56, %t57
|
|
|
+ %t58 =l extsw %t55
|
|
|
+ %t59 =l mul 8, %t58
|
|
|
+ %t53 =l add %t54, %t59
|
|
|
+ %t52 =l loadl %t53
|
|
|
+ %t61 =w loadw %y
|
|
|
+ %t62 =w loadw %i
|
|
|
+ %t60 =w add %t61, %t62
|
|
|
+ %t63 =l extsw %t60
|
|
|
+ %t64 =l mul 4, %t63
|
|
|
+ %t51 =l add %t52, %t64
|
|
|
+ %t50 =w loadw %t51
|
|
|
+ %t48 =w add %t49, %t50
|
|
|
+ storew %t48, %r
|
|
|
+@l5
|
|
|
+ %t68 =w loadw %x
|
|
|
+ %t69 =w loadw %i
|
|
|
+ %t67 =w add %t68, %t69
|
|
|
+ %t70 =w loadw $glo1
|
|
|
+ %t66 =w csltw %t67, %t70
|
|
|
+ %t74 =w loadw %y
|
|
|
+ %t75 =w loadw %i
|
|
|
+ %t73 =w sub %t74, %t75
|
|
|
+ %t71 =w cslew 0, %t73
|
|
|
+ %t65 =w and %t66, %t71
|
|
|
+ jnz %t65, @l7, @l8
|
|
|
+@l7
|
|
|
+ %t78 =w loadw %r
|
|
|
+ %t83 =l loadl $glo3
|
|
|
+ %t85 =w loadw %x
|
|
|
+ %t86 =w loadw %i
|
|
|
+ %t84 =w add %t85, %t86
|
|
|
+ %t87 =l extsw %t84
|
|
|
+ %t88 =l mul 8, %t87
|
|
|
+ %t82 =l add %t83, %t88
|
|
|
+ %t81 =l loadl %t82
|
|
|
+ %t90 =w loadw %y
|
|
|
+ %t91 =w loadw %i
|
|
|
+ %t89 =w sub %t90, %t91
|
|
|
+ %t92 =l extsw %t89
|
|
|
+ %t93 =l mul 4, %t92
|
|
|
+ %t80 =l add %t81, %t93
|
|
|
+ %t79 =w loadw %t80
|
|
|
+ %t77 =w add %t78, %t79
|
|
|
+ storew %t77, %r
|
|
|
+@l8
|
|
|
+ %t98 =w loadw %x
|
|
|
+ %t99 =w loadw %i
|
|
|
+ %t97 =w sub %t98, %t99
|
|
|
+ %t95 =w cslew 0, %t97
|
|
|
+ %t102 =w loadw %y
|
|
|
+ %t103 =w loadw %i
|
|
|
+ %t101 =w add %t102, %t103
|
|
|
+ %t104 =w loadw $glo1
|
|
|
+ %t100 =w csltw %t101, %t104
|
|
|
+ %t94 =w and %t95, %t100
|
|
|
+ jnz %t94, @l10, @l11
|
|
|
+@l10
|
|
|
+ %t107 =w loadw %r
|
|
|
+ %t112 =l loadl $glo3
|
|
|
+ %t114 =w loadw %x
|
|
|
+ %t115 =w loadw %i
|
|
|
+ %t113 =w sub %t114, %t115
|
|
|
+ %t116 =l extsw %t113
|
|
|
+ %t117 =l mul 8, %t116
|
|
|
+ %t111 =l add %t112, %t117
|
|
|
+ %t110 =l loadl %t111
|
|
|
+ %t119 =w loadw %y
|
|
|
+ %t120 =w loadw %i
|
|
|
+ %t118 =w add %t119, %t120
|
|
|
+ %t121 =l extsw %t118
|
|
|
+ %t122 =l mul 4, %t121
|
|
|
+ %t109 =l add %t110, %t122
|
|
|
+ %t108 =w loadw %t109
|
|
|
+ %t106 =w add %t107, %t108
|
|
|
+ storew %t106, %r
|
|
|
+@l11
|
|
|
+ %t127 =w loadw %x
|
|
|
+ %t128 =w loadw %i
|
|
|
+ %t126 =w sub %t127, %t128
|
|
|
+ %t124 =w cslew 0, %t126
|
|
|
+ %t132 =w loadw %y
|
|
|
+ %t133 =w loadw %i
|
|
|
+ %t131 =w sub %t132, %t133
|
|
|
+ %t129 =w cslew 0, %t131
|
|
|
+ %t123 =w and %t124, %t129
|
|
|
+ jnz %t123, @l13, @l14
|
|
|
+@l13
|
|
|
+ %t136 =w loadw %r
|
|
|
+ %t141 =l loadl $glo3
|
|
|
+ %t143 =w loadw %x
|
|
|
+ %t144 =w loadw %i
|
|
|
+ %t142 =w sub %t143, %t144
|
|
|
+ %t145 =l extsw %t142
|
|
|
+ %t146 =l mul 8, %t145
|
|
|
+ %t140 =l add %t141, %t146
|
|
|
+ %t139 =l loadl %t140
|
|
|
+ %t148 =w loadw %y
|
|
|
+ %t149 =w loadw %i
|
|
|
+ %t147 =w sub %t148, %t149
|
|
|
+ %t150 =l extsw %t147
|
|
|
+ %t151 =l mul 4, %t150
|
|
|
+ %t138 =l add %t139, %t151
|
|
|
+ %t137 =w loadw %t138
|
|
|
+ %t135 =w add %t136, %t137
|
|
|
+ storew %t135, %r
|
|
|
+@l14
|
|
|
+ %t153 =w loadw %i
|
|
|
+ %t152 =w add %t153, 1
|
|
|
+ storew %t152, %i
|
|
|
+ jmp @l1
|
|
|
+@l3
|
|
|
+ %t154 =w loadw %r
|
|
|
+ ret %t154
|
|
|
+}
|
|
|
+
|
|
|
+export function w $go(w %t0) {
|
|
|
+@l16
|
|
|
+ %y =l alloc4 4
|
|
|
+ storew %t0, %y
|
|
|
+ %x =l alloc4 4
|
|
|
+ %t2 =w loadw %y
|
|
|
+ %t3 =w loadw $glo1
|
|
|
+ %t1 =w ceqw %t2, %t3
|
|
|
+ jnz %t1, @l17, @l18
|
|
|
+@l17
|
|
|
+ %t5 =w loadw $glo2
|
|
|
+ %t4 =w add %t5, 1
|
|
|
+ storew %t4, $glo2
|
|
|
+ ret 0
|
|
|
+@l18
|
|
|
+ storew 0, %x
|
|
|
+@l20
|
|
|
+ %t10 =w loadw %x
|
|
|
+ %t11 =w loadw $glo1
|
|
|
+ %t9 =w csltw %t10, %t11
|
|
|
+ jnz %t9, @l21, @l22
|
|
|
+@l21
|
|
|
+ %t14 =w loadw %x
|
|
|
+ %t15 =w loadw %y
|
|
|
+ %t13 =w call $chk(w %t14, w %t15)
|
|
|
+ %t12 =w ceqw %t13, 0
|
|
|
+ jnz %t12, @l23, @l24
|
|
|
+@l23
|
|
|
+ %t21 =l loadl $glo3
|
|
|
+ %t22 =w loadw %x
|
|
|
+ %t23 =l extsw %t22
|
|
|
+ %t24 =l mul 8, %t23
|
|
|
+ %t20 =l add %t21, %t24
|
|
|
+ %t19 =l loadl %t20
|
|
|
+ %t25 =w loadw %y
|
|
|
+ %t26 =l extsw %t25
|
|
|
+ %t27 =l mul 4, %t26
|
|
|
+ %t18 =l add %t19, %t27
|
|
|
+ %t28 =w loadw %t18
|
|
|
+ %t17 =w add %t28, 1
|
|
|
+ storew %t17, %t18
|
|
|
+ %t31 =w loadw %y
|
|
|
+ %t30 =w add %t31, 1
|
|
|
+ %t29 =w call $go(w %t30)
|
|
|
+ %t37 =l loadl $glo3
|
|
|
+ %t38 =w loadw %x
|
|
|
+ %t39 =l extsw %t38
|
|
|
+ %t40 =l mul 8, %t39
|
|
|
+ %t36 =l add %t37, %t40
|
|
|
+ %t35 =l loadl %t36
|
|
|
+ %t41 =w loadw %y
|
|
|
+ %t42 =l extsw %t41
|
|
|
+ %t43 =l mul 4, %t42
|
|
|
+ %t34 =l add %t35, %t43
|
|
|
+ %t44 =w loadw %t34
|
|
|
+ %t33 =w sub %t44, 1
|
|
|
+ storew %t33, %t34
|
|
|
+@l24
|
|
|
+ %t46 =w loadw %x
|
|
|
+ %t45 =w add %t46, 1
|
|
|
+ storew %t45, %x
|
|
|
+ jmp @l20
|
|
|
+@l22
|
|
|
+ ret 0
|
|
|
+}
|
|
|
+
|
|
|
+export function w $main() {
|
|
|
+@l26
|
|
|
+ %i =l alloc4 4
|
|
|
+ storew 8, $glo1
|
|
|
+ %t4 =w loadw $glo1
|
|
|
+ %t3 =l call $calloc(w %t4, w 8)
|
|
|
+ storel %t3, $glo3
|
|
|
+ storew 0, %i
|
|
|
+@l27
|
|
|
+ %t9 =w loadw %i
|
|
|
+ %t10 =w loadw $glo1
|
|
|
+ %t8 =w csltw %t9, %t10
|
|
|
+ jnz %t8, @l28, @l29
|
|
|
+@l28
|
|
|
+ %t13 =w loadw $glo1
|
|
|
+ %t12 =l call $calloc(w %t13, w 4)
|
|
|
+ %t16 =l loadl $glo3
|
|
|
+ %t17 =w loadw %i
|
|
|
+ %t18 =l extsw %t17
|
|
|
+ %t19 =l mul 8, %t18
|
|
|
+ %t15 =l add %t16, %t19
|
|
|
+ storel %t12, %t15
|
|
|
+ %t21 =w loadw %i
|
|
|
+ %t20 =w add %t21, 1
|
|
|
+ storew %t20, %i
|
|
|
+ jmp @l27
|
|
|
+@l29
|
|
|
+ %t22 =w call $go(w 0)
|
|
|
+ %t25 =w loadw $glo2
|
|
|
+ %t24 =w cnew %t25, 92
|
|
|
+ ret %t24
|
|
|
+}
|
|
|
+
|
|
|
+data $glo1 = { w 0 }
|
|
|
+data $glo2 = { w 0 }
|
|
|
+data $glo3 = { l 0 }
|