queen.ssa (5318B)
1 # eight queens program 2 # generated by minic 3 4 export function w $chk(w %t0, w %t1) { 5 @l0 6 %x =l alloc4 4 7 storew %t0, %x 8 %y =l alloc4 4 9 storew %t1, %y 10 %i =l alloc4 4 11 %r =l alloc4 4 12 storew 0, %i 13 storew 0, %r 14 @l1 15 %t6 =w loadw %i 16 %t7 =w loadw $glo1 17 %t5 =w csltw %t6, %t7 18 jnz %t5, @l2, @l3 19 @l2 20 %t10 =w loadw %r 21 %t15 =l loadl $glo3 22 %t16 =w loadw %x 23 %t17 =l extsw %t16 24 %t18 =l mul 8, %t17 25 %t14 =l add %t15, %t18 26 %t13 =l loadl %t14 27 %t19 =w loadw %i 28 %t20 =l extsw %t19 29 %t21 =l mul 4, %t20 30 %t12 =l add %t13, %t21 31 %t11 =w loadw %t12 32 %t9 =w add %t10, %t11 33 storew %t9, %r 34 %t24 =w loadw %r 35 %t29 =l loadl $glo3 36 %t30 =w loadw %i 37 %t31 =l extsw %t30 38 %t32 =l mul 8, %t31 39 %t28 =l add %t29, %t32 40 %t27 =l loadl %t28 41 %t33 =w loadw %y 42 %t34 =l extsw %t33 43 %t35 =l mul 4, %t34 44 %t26 =l add %t27, %t35 45 %t25 =w loadw %t26 46 %t23 =w add %t24, %t25 47 storew %t23, %r 48 %t39 =w loadw %x 49 %t40 =w loadw %i 50 %t38 =w add %t39, %t40 51 %t41 =w loadw $glo1 52 %t37 =w csltw %t38, %t41 53 %t44 =w loadw %y 54 %t45 =w loadw %i 55 %t43 =w add %t44, %t45 56 %t46 =w loadw $glo1 57 %t42 =w csltw %t43, %t46 58 %t36 =w and %t37, %t42 59 jnz %t36, @l4, @l5 60 @l4 61 %t49 =w loadw %r 62 %t54 =l loadl $glo3 63 %t56 =w loadw %x 64 %t57 =w loadw %i 65 %t55 =w add %t56, %t57 66 %t58 =l extsw %t55 67 %t59 =l mul 8, %t58 68 %t53 =l add %t54, %t59 69 %t52 =l loadl %t53 70 %t61 =w loadw %y 71 %t62 =w loadw %i 72 %t60 =w add %t61, %t62 73 %t63 =l extsw %t60 74 %t64 =l mul 4, %t63 75 %t51 =l add %t52, %t64 76 %t50 =w loadw %t51 77 %t48 =w add %t49, %t50 78 storew %t48, %r 79 @l5 80 %t68 =w loadw %x 81 %t69 =w loadw %i 82 %t67 =w add %t68, %t69 83 %t70 =w loadw $glo1 84 %t66 =w csltw %t67, %t70 85 %t74 =w loadw %y 86 %t75 =w loadw %i 87 %t73 =w sub %t74, %t75 88 %t71 =w cslew 0, %t73 89 %t65 =w and %t66, %t71 90 jnz %t65, @l7, @l8 91 @l7 92 %t78 =w loadw %r 93 %t83 =l loadl $glo3 94 %t85 =w loadw %x 95 %t86 =w loadw %i 96 %t84 =w add %t85, %t86 97 %t87 =l extsw %t84 98 %t88 =l mul 8, %t87 99 %t82 =l add %t83, %t88 100 %t81 =l loadl %t82 101 %t90 =w loadw %y 102 %t91 =w loadw %i 103 %t89 =w sub %t90, %t91 104 %t92 =l extsw %t89 105 %t93 =l mul 4, %t92 106 %t80 =l add %t81, %t93 107 %t79 =w loadw %t80 108 %t77 =w add %t78, %t79 109 storew %t77, %r 110 @l8 111 %t98 =w loadw %x 112 %t99 =w loadw %i 113 %t97 =w sub %t98, %t99 114 %t95 =w cslew 0, %t97 115 %t102 =w loadw %y 116 %t103 =w loadw %i 117 %t101 =w add %t102, %t103 118 %t104 =w loadw $glo1 119 %t100 =w csltw %t101, %t104 120 %t94 =w and %t95, %t100 121 jnz %t94, @l10, @l11 122 @l10 123 %t107 =w loadw %r 124 %t112 =l loadl $glo3 125 %t114 =w loadw %x 126 %t115 =w loadw %i 127 %t113 =w sub %t114, %t115 128 %t116 =l extsw %t113 129 %t117 =l mul 8, %t116 130 %t111 =l add %t112, %t117 131 %t110 =l loadl %t111 132 %t119 =w loadw %y 133 %t120 =w loadw %i 134 %t118 =w add %t119, %t120 135 %t121 =l extsw %t118 136 %t122 =l mul 4, %t121 137 %t109 =l add %t110, %t122 138 %t108 =w loadw %t109 139 %t106 =w add %t107, %t108 140 storew %t106, %r 141 @l11 142 %t127 =w loadw %x 143 %t128 =w loadw %i 144 %t126 =w sub %t127, %t128 145 %t124 =w cslew 0, %t126 146 %t132 =w loadw %y 147 %t133 =w loadw %i 148 %t131 =w sub %t132, %t133 149 %t129 =w cslew 0, %t131 150 %t123 =w and %t124, %t129 151 jnz %t123, @l13, @l14 152 @l13 153 %t136 =w loadw %r 154 %t141 =l loadl $glo3 155 %t143 =w loadw %x 156 %t144 =w loadw %i 157 %t142 =w sub %t143, %t144 158 %t145 =l extsw %t142 159 %t146 =l mul 8, %t145 160 %t140 =l add %t141, %t146 161 %t139 =l loadl %t140 162 %t148 =w loadw %y 163 %t149 =w loadw %i 164 %t147 =w sub %t148, %t149 165 %t150 =l extsw %t147 166 %t151 =l mul 4, %t150 167 %t138 =l add %t139, %t151 168 %t137 =w loadw %t138 169 %t135 =w add %t136, %t137 170 storew %t135, %r 171 @l14 172 %t153 =w loadw %i 173 %t152 =w add %t153, 1 174 storew %t152, %i 175 jmp @l1 176 @l3 177 %t154 =w loadw %r 178 ret %t154 179 } 180 181 export function w $go(w %t0) { 182 @l16 183 %y =l alloc4 4 184 storew %t0, %y 185 %x =l alloc4 4 186 %t2 =w loadw %y 187 %t3 =w loadw $glo1 188 %t1 =w ceqw %t2, %t3 189 jnz %t1, @l17, @l18 190 @l17 191 %t5 =w loadw $glo2 192 %t4 =w add %t5, 1 193 storew %t4, $glo2 194 ret 0 195 @l18 196 storew 0, %x 197 @l20 198 %t10 =w loadw %x 199 %t11 =w loadw $glo1 200 %t9 =w csltw %t10, %t11 201 jnz %t9, @l21, @l22 202 @l21 203 %t14 =w loadw %x 204 %t15 =w loadw %y 205 %t13 =w call $chk(w %t14, w %t15) 206 %t12 =w ceqw %t13, 0 207 jnz %t12, @l23, @l24 208 @l23 209 %t21 =l loadl $glo3 210 %t22 =w loadw %x 211 %t23 =l extsw %t22 212 %t24 =l mul 8, %t23 213 %t20 =l add %t21, %t24 214 %t19 =l loadl %t20 215 %t25 =w loadw %y 216 %t26 =l extsw %t25 217 %t27 =l mul 4, %t26 218 %t18 =l add %t19, %t27 219 %t28 =w loadw %t18 220 %t17 =w add %t28, 1 221 storew %t17, %t18 222 %t31 =w loadw %y 223 %t30 =w add %t31, 1 224 %t29 =w call $go(w %t30) 225 %t37 =l loadl $glo3 226 %t38 =w loadw %x 227 %t39 =l extsw %t38 228 %t40 =l mul 8, %t39 229 %t36 =l add %t37, %t40 230 %t35 =l loadl %t36 231 %t41 =w loadw %y 232 %t42 =l extsw %t41 233 %t43 =l mul 4, %t42 234 %t34 =l add %t35, %t43 235 %t44 =w loadw %t34 236 %t33 =w sub %t44, 1 237 storew %t33, %t34 238 @l24 239 %t46 =w loadw %x 240 %t45 =w add %t46, 1 241 storew %t45, %x 242 jmp @l20 243 @l22 244 ret 0 245 } 246 247 export function w $main() { 248 @l26 249 %i =l alloc4 4 250 storew 8, $glo1 251 %t4 =w loadw $glo1 252 %t3 =l call $calloc(w %t4, w 8) 253 storel %t3, $glo3 254 storew 0, %i 255 @l27 256 %t9 =w loadw %i 257 %t10 =w loadw $glo1 258 %t8 =w csltw %t9, %t10 259 jnz %t8, @l28, @l29 260 @l28 261 %t13 =w loadw $glo1 262 %t12 =l call $calloc(w %t13, w 4) 263 %t16 =l loadl $glo3 264 %t17 =w loadw %i 265 %t18 =l extsw %t17 266 %t19 =l mul 8, %t18 267 %t15 =l add %t16, %t19 268 storel %t12, %t15 269 %t21 =w loadw %i 270 %t20 =w add %t21, 1 271 storew %t20, %i 272 jmp @l27 273 @l29 274 %t22 =w call $go(w 0) 275 %t25 =w loadw $glo2 276 %t24 =w cnew %t25, 92 277 ret %t24 278 } 279 280 data $glo1 = { w 0 } 281 data $glo2 = { w 0 } 282 data $glo3 = { l 0 }