         Edinburgh IMP77 Compiler - Version 8.4
    1
				.machine ppc
				.section	".text"
		.Ltext0:
				.align 2
		_imp_SQRT:
		.LFB61:
		.LVL0:
				stwu 1,-16(1)
				mflr 0
				stw 0,20(1)
				bl sqrt
		.LVL1:
				lwz 0,20(1)
				mtlr 0
				addi 1,1,16
				blr
		.LFE61:
				.align 2
		_imp_SIN:
		.LFB42:
		.LVL2:
				stwu 1,-16(1)
				mflr 0
				stw 0,20(1)
				bl sin
		.LVL3:
				lwz 0,20(1)
				mtlr 0
				addi 1,1,16
				blr
		.LFE42:
				.align 2
		TABULATE.6989:
		.LFB186:
    2 %begin
		.LVL36:
				stwu 1,-1328(1)
				mflr 0
				stw 0,1332(1)
				stfd 31,1320(1)
				stw 31,1316(1)
				lwz 9,-28680(2)
				stw 9,1308(1)
				li 9,0
    3 %routine Tabulate (%longrealfn func(%longreal x),%longreal from,to,
		.LVL4:
				stwu 1,-1376(1)
				mflr 0
				stw 0,1380(1)
				stfd 29,1352(1)
				stfd 30,1360(1)
				stfd 31,1368(1)
				stw 29,1340(1)
				stw 30,1344(1)
				stw 31,1348(1)
				mr 29,3
				mr 30,4
				lwz 9,-28680(2)
				stw 9,1324(1)
				li 9,0
				bl _imp_initialise
		.LVL37:
		.LBB30:
    4    %integer steps)
    5 ! func(x) is the dummy formal function
    6 %real value,inc
    7 %integer i
    8 !
    9 inc=(to-from)/steps
				fsub 29,2,1
				xoris 9,4,0x8000
				stw 9,540(1)
				lis 9,0x4330
				stw 9,536(1)
				lis 9,.LC3@ha
				lfd 2,.LC3@l(9)
		.LVL5:
				lfd 0,536(1)
				fsub 2,0,2
				fdiv 29,29,2
				frsp 29,29
		.LVL6:
   10 !
   11 value=from
				frsp 31,1
		.LVL7:
		.LBB21:
   12 %for i=0,1,steps %cycle
   13    print(value,4,2) ; print(func(value),10,4) ; newline
				fmr 30,31
		.LVL11:
		.LBB22:
		.LBB23:
				li 4,2
				li 3,4
				fmr 1,30
				bl _imp_print
		.LVL12:
		.LBE23:
		.LBE22:
   14    value=value+inc
				cmpwi 7,4,0
				blt 7,.L16
		.LVL8:
		.L6:
				fmr 1,30
				mtctr 29
				bctrl
		.LVL13:
		.LBB24:
		.LBB25:
				li 4,4
				li 3,10
				bl _imp_print
		.LVL14:
		.LBE25:
		.LBE24:
		.LBB26:
		.LBB27:
				bl _imp_newline
		.LVL15:
		.LBE27:
		.LBE26:
				fadds 31,31,29
		.LVL16:
				lis 9,_imp_current_file@ha
				lwz 4,_imp_current_file@l(9)
		.LVL23:
				cmpwi 7,4,0
				beq 7,.L7
				addi 3,1,812
		.LVL24:
				bl _imp_c2istr
		.LVL25:
		.L8:
				lis 9,_imp_current_line@ha
				lwz 31,_imp_current_line@l(9)
				cmpwi 7,31,0
				bne 7,.L9
				li 31,14
		.L9:
				lis 4,.LC5@ha
				la 4,.LC5@l(4)
				addi 3,1,1068
				bl _imp_c2istr
		.LVL26:
				li 5,256
				addi 4,1,812
				addi 3,1,272
				bl memcpy
		.LVL27:
				li 5,256
				addi 4,1,1068
				addi 3,1,16
				bl memcpy
		.LVL28:
				li 8,0
				li 7,1
				li 6,5
				addi 5,1,16
				mr 4,31
				addi 3,1,272
				bl _signal_event
		.LVL29:
				b .L6
		.LVL30:
		.L7:
		.LBB28:
				li 5,256
				lis 4,.LANCHOR0@ha
				la 4,.LANCHOR0@l(4)
				addi 3,1,1068
		.LVL31:
				bl memcpy
		.LVL32:
				li 5,256
				addi 4,1,1068
				addi 3,1,556
				bl memcpy
		.LVL33:
		.LBE28:
				li 5,256
				addi 4,1,556
				addi 3,1,812
				bl memcpy
		.LVL34:
				b .L8
		.L17:
		.LBE29:
   15 %repeat
   16 %end ;!  of routine tabulate
   17 !
				cmpwi 7,30,-1
				beq 7,.L5
				li 31,-1
		.LVL9:
		.L11:
				cmpw 7,30,31
				bne 7,.L11
		.L10:
		.LVL17:
		.L5:
		.LBE21:
				lwz 9,1324(1)
				lwz 10,-28680(2)
				xor. 9,9,10
				li 10,0
				bne 0,.L17
				lwz 0,1380(1)
				mtlr 0
				lwz 29,1340(1)
		.LVL18:
				lwz 30,1344(1)
		.LVL19:
				lwz 31,1348(1)
				lfd 29,1352(1)
		.LVL20:
				lfd 30,1360(1)
				lfd 31,1368(1)
		.LVL21:
				addi 1,1,1376
				blr
		.LVL22:
		.L16:
		.LBB29:
				bl __stack_chk_fail
		.LVL35:
		.LFE186:
				.align 2
				.globl main
		main:
		.LFB185:
   18 ! now call with some functions....
				addi 31,31,1
		.LVL10:
   19 printstring("
				lis 31,.LANCHOR0@ha
				la 31,.LANCHOR0@l(31)
				li 5,256
				addi 4,31,256
				addi 3,1,1052
				bl memcpy
		.LVL38:
				li 5,256
				addi 4,1,1052
				addi 3,1,284
				bl memcpy
		.LVL39:
				li 5,256
				addi 4,1,284
				addi 3,1,1052
				bl memcpy
		.LVL40:
		.LBE30:
		.LBB31:
		.LBB32:
				li 5,256
				addi 4,1,1052
				addi 3,1,16
				bl memcpy
		.LVL41:
				addi 3,1,16
				bl _imp_printstring
		.LVL42:
		.LBE32:
		.LBE31:
   20     x               sine(x)
   21 ")
   22 tabulate ( sin, 0.0,pi/2,10)
				lis 9,.LC7@ha
				lfd 31,.LC7@l(9)
				li 4,10
				lis 9,.LC6@ha
				lfd 2,.LC6@l(9)
				fmr 1,31
				lis 3,_imp_SIN@ha
				la 3,_imp_SIN@l(3)
				bl TABULATE.6989
		.LVL43:
		.LBB33:
   23 ! note that the function name appears WITHOUT parameters in the call
   24 !
   25 printstring("
				li 5,256
				addi 4,31,512
				addi 3,1,796
				bl memcpy
		.LVL44:
				li 5,256
				addi 4,1,796
				addi 3,1,540
				bl memcpy
		.LVL45:
				li 5,256
				addi 4,1,540
				addi 3,1,796
				bl memcpy
		.LVL46:
		.LBE33:
		.LBB34:
		.LBB35:
				li 5,256
				addi 4,1,796
				addi 3,1,16
				bl memcpy
		.LVL47:
				addi 3,1,16
				bl _imp_printstring
		.LVL48:
		.LBE35:
		.LBE34:
   26     x         squareroot(x)
   27 ")
   28 tabulate( sqrt, 0.0,10.0,5)
				li 4,5
				lis 9,.LC9@ha
				lfd 2,.LC9@l(9)
				fmr 1,31
				lis 3,_imp_SQRT@ha
				la 3,_imp_SQRT@l(3)
				bl TABULATE.6989
		.LVL49:
		.LBB36:
		.LBB37:
				li 3,0
				bl exit
		.LVL50:
		.LBE37:
		.LBE36:
		.LFE185:
				.section	.rodata
				.set	.LANCHOR0,. + 0
		.LC2:
				.byte	17
				.string	"test-new/rt28.imp"
				.zero	237
		.LC0:
				.byte	29
				.string	"\n    x               sine(x)\n"
				.zero	225
		.LC1:
				.byte	29
				.string	"\n    x         squareroot(x)\n"
				.zero	225
				.section	.rodata.cst8,"aM",@progbits,8
				.align 3
		.LC3:
				.long	1127219200
				.long	-2147483648
		.LC6:
				.long	1073291771
				.long	1413754136
		.LC7:
				.long	0
				.long	0
		.LC9:
				.long	1076101120
				.long	0
				.section	.rodata.str1.4,"aMS",@progbits,1
				.align 2
		.LC5:
				.string	"Illegal cycle I = 0, 1, STEPS"
				.section	".text"
		.Letext0:
   29 !
   30 %endofprogram
   18 Statements compiled
