.global main .section ".text" .align 4 main: save %sp,-96,%sp mov %g0,%i5 .L2: sll %i5,2,%i4 set 1,%i3 set down,%i2 st %i3,[%i4+%i2] set up,%i2 st %i3,[%i4+%i2] .L3: add %i5,1,%i5 cmp %i5,15; bl .L2; nop mov %g0,%i5 .L6: sll %i5,2,%i4 set rows,%i3 set 1,%i2 st %i2,[%i4+%i3] .L7: add %i5,1,%i5 cmp %i5,8; bl .L6; nop mov %g0,%o0 call queens; nop mov %g0,%i0 .L1: ret; restore .type main,#function .size main,.-main .global queens .align 4 queens: save %sp,-96,%sp mov %g0,%i5 .L11: sll %i5,2,%i3 set rows,%i2 ld [%i3+%i2],%i3 cmp %i3,%g0; be .L15; nop sub %i5,%i0,%i3 sll %i3,2,%i3 set up+28,%i2 ld [%i3+%i2],%i3 cmp %i3,%g0; be .L15; nop add %i5,%i0,%i3 sll %i3,2,%i3 set down,%i2 ld [%i3+%i2],%i3 cmp %i3,%g0; be .L15; nop add %i5,%i0,%i3 sll %i3,2,%i3 set down,%i2 st %g0,[%i3+%i2] sub %i5,%i0,%i3 sll %i3,2,%i3 set up+28,%i2 st %g0,[%i3+%i2] sll %i5,2,%i3 set rows,%i2 st %g0,[%i3+%i2] sll %i0,2,%i4 set x,%i3 st %i5,[%i4+%i3] cmp %i0,7; bne .L19; nop call print; nop ba .L20; nop .L19: add %i0,1,%o0 call queens; nop .L20: set 1,%i4 add %i5,%i0,%i3 sll %i3,2,%i3 set down,%i2 st %i4,[%i3+%i2] sub %i5,%i0,%i3 sll %i3,2,%i3 set up+28,%i2 st %i4,[%i3+%i2] sll %i5,2,%i3 set rows,%i2 st %i4,[%i3+%i2] .L15: .L12: add %i5,1,%i5 cmp %i5,8; bl .L11; nop mov %g0,%i0 .L10: ret; restore .type queens,#function .size queens,.-queens .global print .align 4 print: save %sp,-96,%sp mov %g0,%i5 .L23: set .L27,%o0 sll %i5,2,%i4 set x,%i3 ld [%i4+%i3],%i4 add %i4,49,%o1 call printf; nop .L24: add %i5,1,%i5 cmp %i5,8; bl .L23; nop set .L28,%o0 call printf; nop mov %g0,%i0 .L22: ret; restore .type print,#function .size print,.-print .section ".bss" .global x .type x,#object .size x,32 .common x,32,4 .global rows .type rows,#object .size rows,32 .common rows,32,4 .global down .type down,#object .size down,60 .common down,60,4 .global up .type up,#object .size up,60 .common up,60,4 .section ".rodata" .align 1 .L28: .byte 10 .byte 0 .align 1 .L27: .byte 37 .byte 99 .byte 32 .byte 0