fact.as 2.41 KB
	.globl	readInt
	.globl	writeInt
	.globl	readBool
	.globl	writeBool
	.globl	readReal
	.globl	writeReal
	.globl	writeChar
	.globl	fact
	.text
fact:
# args:   4 bytes
# result: 4 bytes
# locals: 0 bytes
# temps:  8 bytes
#
#     i:	argument (4 bytes)	at (ap)
#
	movl	sp, fp
	subl2	$8, sp
Lbg_1:
	movl	(ap), r0
	movb	$1, r1
	cmpl	r0, $0
	jlss	Lro_1
	movb	$0, r1
Lro_1:
	jlbc	r1, Lel_1
	movl	$0, (r11)
	jbr	Leg_1
Lel_1:
	movl	(ap), r0
	movb	$1, r1
	cmpl	r0, $0
	jeql	Lro_2
	movb	$0, r1
Lro_2:
	jlbc	r1, Lel_2
	movl	$1, (r11)
	jbr	Leg_1
Lel_2:
	movl	(ap), r0
	movl	(ap), r1
	subl2	$1, r1
	movl	r1, -4(fp)
	pushr	$0x3801
	moval	-8(fp), r11
	moval	-4(fp), ap
	jsb	fact
	popr	$0x3801
	mull3	-8(fp), r0, (r11)
Leg_1:
	movl	fp, sp
	rsb

	.globl	ifact
	.text
ifact:
# args:   4 bytes
# result: 4 bytes
# locals: 8 bytes
# temps:  0 bytes
#
#     i:	argument (4 bytes)	at (ap)
#     res:	local    (4 bytes)	at -4(fp)
#     k:	local    (4 bytes)	at -8(fp)
#
	movl	sp, fp
	subl2	$8, sp
	movl	$1, -4(fp)
	movl	(ap), -8(fp)
Lbg_2:
	movl	-8(fp), r0
	movb	$1, r1
	cmpl	r0, $0
	jgtr	Lro_3
	movb	$0, r1
Lro_3:
	jlbc	r1, Lel_3
	movl	-4(fp), r0
	movl	-8(fp), r1
	mull3	r1, r0, -4(fp)
	movl	-8(fp), r0
	subl3	$1, r0, -8(fp)
	jbr	Lbg_2
Lel_3:
Leg_2:
	movl	-4(fp), (r11)
	movl	fp, sp
	rsb

	.globl	program
	.text
program:
# args:   0 bytes
# result: 0 bytes
# locals: 4 bytes
# temps:  9 bytes
#
#     i:	local    (4 bytes)	at -4(fp)
#
	movl	sp, fp
	subl2	$13, sp
Lbg_3:
	pushr	$0x3800
	movab	-5(fp), r11
	movab	-4(fp), ap
	jsb	readBool
	popr	$0x3800
	jlbc	-5(fp), Lel_4
	pushr	$0x3800
	moval	-4(fp), r11
	movab	-4(fp), ap
	jsb	readInt
	popr	$0x3800
	movl	-4(fp), r0
	movl	r0, -9(fp)
	pushr	$0x3800
	movab	-4(fp), r11
	moval	-9(fp), ap
	jsb	writeInt
	popr	$0x3800
	movl	$10, -9(fp)
	pushr	$0x3800
	movab	-4(fp), r11
	moval	-9(fp), ap
	jsb	writeChar
	popr	$0x3800
	movl	-4(fp), r0
	movl	r0, -9(fp)
	pushr	$0x3800
	moval	-13(fp), r11
	moval	-9(fp), ap
	jsb	ifact
	popr	$0x3800
	pushr	$0x3800
	movab	-4(fp), r11
	moval	-13(fp), ap
	jsb	writeInt
	popr	$0x3800
	movl	$32, -9(fp)
	pushr	$0x3800
	movab	-4(fp), r11
	moval	-9(fp), ap
	jsb	writeChar
	popr	$0x3800
	movl	-4(fp), r0
	movl	r0, -9(fp)
	pushr	$0x3800
	moval	-13(fp), r11
	moval	-9(fp), ap
	jsb	fact
	popr	$0x3800
	pushr	$0x3800
	movab	-4(fp), r11
	moval	-13(fp), ap
	jsb	writeInt
	popr	$0x3800
	movl	$10, -9(fp)
	pushr	$0x3800
	movab	-4(fp), r11
	moval	-9(fp), ap
	jsb	writeChar
	popr	$0x3800
	jbr	Lbg_3
Lel_4:
Leg_3:
	movl	fp, sp
	rsb