| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282 |
- # 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 }
|