         Edinburgh IMP77 Compiler - Version 8.4
    1 %begin
				.machine ppc
				.section	".text"
		.Ltext0:
				.align 2
		ACKERMANN.6986:
		.LFB186:
		.LVL11:
				stwu 1,-1360(1)
				mflr 0
				stw 0,1364(1)
				stfd 31,1352(1)
				stw 28,1336(1)
				stw 29,1340(1)
				stw 30,1344(1)
				stw 31,1348(1)
				lwz 9,-28680(2)
				stw 9,1324(1)
				li 9,0
    2   %integer %function ackermann(%integer m,n)
		.LVL0:
				stwu 1,-32(1)
				stw 31,28(1)
				bl _imp_initialise
		.LVL12:
    3     %result = n+1 %if m = 0
				mr. 31,3
				beq 0,.L6
		.L2:
				mflr 0
				stw 0,36(1)
    4     %result = ackermann(m-1,1) %if n = 0
				cmpwi 7,4,0
				beq 7,.L7
		.L4:
				addi 3,4,1
		.LVL5:
		.L1:
    5     %result = ackermann(m-1,ackermann(m,n-1))
				addi 4,4,-1
		.LVL1:
				mr 3,31
				bl ACKERMANN.6986
		.LVL2:
				mr 4,3
				addi 3,31,-1
				bl ACKERMANN.6986
		.LVL3:
				lwz 0,36(1)
				mtlr 0
				b .L1
		.LVL4:
		.L6:
				li 4,1
		.LVL8:
				addi 3,31,-1
		.LVL9:
				bl ACKERMANN.6986
		.LVL10:
				lwz 0,36(1)
				mtlr 0
				b .L1
		.LFE186:
				.align 2
				.globl main
		main:
		.LFB185:
    6   %end
				lwz 31,28(1)
		.LVL6:
				addi 1,1,32
				blr
		.LVL7:
		.L7:
    7
    8   %owninteger i,j,k,k1,t1,t2
    9
   10   k = 16;  k1 = 1
				lis 9,.LANCHOR0@ha
				la 10,.LANCHOR0@l(9)
				li 8,16
				stw 8,.LANCHOR0@l(9)
   11   %for i = 1,1,6 %cycle
				li 9,1
				stw 9,4(10)
   12     t1 = cputime            ;! cputime is in clocks_per_tick which is 1000000
				stw 3,12(31)
   13     j = ackermann(3,i)
				lwz 4,8(31)
				li 3,3
				bl ACKERMANN.6986
		.LVL20:
				stw 3,16(31)
		.LBB33:
		.LBB34:
				bl _imp_cputime
		.LVL21:
		.LBE34:
		.LBE33:
   14     t2 = cputime
				li 9,0
				lwz 9,8(31)
				cmpwi 7,9,6
				beq 7,.L15
		.L10:
				stw 3,20(31)
   15     %if j # k-3 %then printstring("Wrong result!  ") %and newline
				mr 31,10
		.LBB24:
				addi 9,9,1
				stw 9,8(31)
		.LBB31:
		.LBB32:
				bl _imp_cputime
		.LVL19:
		.LBE32:
		.LBE31:
				lwz 9,0(31)
				addi 9,9,-3
				lwz 10,16(31)
				cmpw 7,9,10
				beq 7,.L9
		.LBB35:
   16     print((t2-t1){/1000},7,3)
				lis 28,.LANCHOR1@ha
				la 28,.LANCHOR1@l(28)
		.LBE24:
				lis 30,0x4330
				lis 29,.LC2@ha
				b .L10
		.L9:
		.LVL13:
				lwz 10,20(31)
				lwz 9,12(31)
				subf 9,9,10
				lfd 31,.LC2@l(29)
				xoris 9,9,0x8000
				stw 9,28(1)
				stw 30,24(1)
				lfd 0,24(1)
				fsub 1,0,31
		.LBB25:
		.LBB26:
				li 4,3
				li 3,7
				bl _imp_print
		.LVL14:
		.LBE26:
		.LBE25:
				li 5,256
				mr 4,28
				addi 3,1,1068
				bl memcpy
		.LVL22:
				li 5,256
				addi 4,1,1068
				addi 3,1,300
				bl memcpy
		.LVL23:
				li 5,256
				addi 4,1,300
				addi 3,1,812
				bl memcpy
		.LVL24:
		.LBE35:
		.LBB36:
		.LBB37:
				li 5,256
				addi 4,1,812
				addi 3,1,32
				bl memcpy
		.LVL25:
				addi 3,1,32
				bl _imp_printstring
		.LVL26:
		.LBE37:
		.LBE36:
		.LBB38:
		.LBB39:
				bl _imp_newline
		.LVL27:
				b .L9
		.L15:
		.L11:
		.LBE39:
		.LBE38:
		.LBB40:
   17     print(3000*(t2-t1)/(512*k1-15*k+9*i+37),7,3)
				lwz 10,20(31)
				lwz 9,12(31)
				subf 9,9,10
				mulli 9,9,3000
				lwz 10,4(31)
				slwi 10,10,9
		.LVL15:
				lwz 7,0(31)
				slwi 8,7,4
				subf 8,8,7
				add 10,10,8
		.LVL16:
				lwz 8,8(31)
				mulli 8,8,9
				add 10,10,8
				addi 10,10,37
				divw 9,9,10
				xoris 9,9,0x8000
				stw 9,20(1)
				stw 30,16(1)
				lfd 0,16(1)
				fsub 1,0,31
		.LBB27:
		.LBB28:
				li 4,3
				li 3,7
				bl _imp_print
		.LVL17:
		.LBE28:
		.LBE27:
		.LBB29:
		.LBB30:
				bl _imp_newline
		.LVL18:
		.LBE30:
		.LBE29:
   18     newline
   19     k1 = 4*k1;  k = 2*k
				lwz 9,4(31)
				slwi 9,9,2
				stw 9,4(31)
   20   %repeat
				lwz 9,0(31)
				slwi 9,9,1
				stw 9,0(31)
		.LDL1:
   21   printstring("Done."); newline
				li 5,256
				lis 4,.LANCHOR1@ha
				la 4,.LANCHOR1@l(4)
				addi 4,4,256
				addi 3,1,1068
				bl memcpy
		.LVL28:
				li 5,256
				addi 4,1,1068
				addi 3,1,556
				bl memcpy
		.LVL29:
				li 5,256
				addi 4,1,556
				addi 3,1,1068
				bl memcpy
		.LVL30:
		.LBE40:
		.LBB41:
		.LBB42:
				li 5,256
				addi 4,1,1068
				addi 3,1,32
				bl memcpy
		.LVL31:
				addi 3,1,32
				bl _imp_printstring
		.LVL32:
		.LBE42:
		.LBE41:
		.LBB43:
		.LBB44:
				bl _imp_newline
		.LVL33:
		.LBE44:
		.LBE43:
		.LBB45:
		.LBB46:
				li 3,0
				bl exit
		.LVL34:
		.LBE46:
		.LBE45:
		.LFE185:
				.section	.rodata
				.set	.LANCHOR1,. + 0
		.LC0:
				.byte	15
				.string	"Wrong result!  "
				.zero	239
		.LC1:
				.byte	5
				.string	"Done."
				.zero	249
				.section	".bss"
				.align 2
				.set	.LANCHOR0,. + 0
		K.6992:
				.zero	4
		K1.6993:
				.zero	4
		I.6990:
				.zero	4
		T1.6994:
				.zero	4
		J.6991:
				.zero	4
		T2.6995:
				.zero	4
				.section	.rodata.cst8,"aM",@progbits,8
				.align 3
		.LC2:
				.long	1127219200
				.long	-2147483648
				.section	".text"
		.Letext0:
   22 %endofprogram
   23 Statements compiled
