aboutsummaryrefslogtreecommitdiffstats
path: root/lcc/sparc/solaris/tst/8q.sbk
diff options
context:
space:
mode:
Diffstat (limited to 'lcc/sparc/solaris/tst/8q.sbk')
-rwxr-xr-xlcc/sparc/solaris/tst/8q.sbk144
1 files changed, 144 insertions, 0 deletions
diff --git a/lcc/sparc/solaris/tst/8q.sbk b/lcc/sparc/solaris/tst/8q.sbk
new file mode 100755
index 0000000..5418dd7
--- /dev/null
+++ b/lcc/sparc/solaris/tst/8q.sbk
@@ -0,0 +1,144 @@
+.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