         Edinburgh IMP77 Compiler - Version 8.4
    1 %externalroutine whatever(%integer x)
				.section .mdebug.abi32
				.previous
				.nan	legacy
				.module	fp=xx
				.module	nooddspreg
				.abicalls
		$Ltext0:
				.align	2
				.globl	WHATEVER
				LFB185 = .
				.set	nomips16
				.set	nomicromips
				.ent	WHATEVER
		WHATEVER:
				.frame	$sp,0,$31		# vars= 0, regs= 0/0, args= 0, gp= 0
				.mask	0x00000000,0
				.fmask	0x00000000,0
				.set	noreorder
				.set	nomacro
				LVL0 = .
    2 %end
?X unused
    3
				jr	$31
				nop
				.set	macro
				.set	reorder
				.end	WHATEVER
		$LFE185:
				.align	2
				.globl	XR1
				LFB186 = .
    4 %externalroutine xr1(%routine fred(%integer p2))
				.set	nomips16
				.set	nomicromips
				.ent	XR1
		XR1:
				.frame	$sp,0,$31		# vars= 0, regs= 0/0, args= 0, gp= 0
				.mask	0x00000000,0
				.fmask	0x00000000,0
				.set	noreorder
				.set	nomacro
				LVL1 = .
    5   %real r1
    6 %end
?R1 unused
?FRED unused
    7
				jr	$31
				nop
				.set	macro
				.set	reorder
				.end	XR1
		$LFE186:
				.align	2
				.globl	XM1
				LFB187 = .
    8 ! Should translate to:
    9
   10 ! void xr1(void (*fred)(int p2)) {
   11 !   float r1;
   12 ! }
   13
   14
   15 %externalintegermap xm1(%routine fred(%integer p2))
   16   %owninteger oi1
				.set	nomips16
				.set	nomicromips
				.ent	XM1
		XM1:
				.frame	$sp,0,$31		# vars= 0, regs= 0/0, args= 0, gp= 0
				.mask	0x00000000,0
				.fmask	0x00000000,0
				.set	noreorder
				.set	nomacro
				LVL2 = .
   17   %result == oi1
   18 %end
				lui	$2,%hi(OI1.6005)
				jr	$31
				addiu	$2,$2,%lo(OI1.6005)
				.set	macro
				.set	reorder
				.end	XM1
		$LFE187:
				.align	2
				.globl	main
				LFB188 = .
?FRED unused
   19
   20 ! Should translate to:
   21
   22 ! int *xm1(void (*fred)(int p2)) {
   23 !   static int oi1;
   24 !   return &oi1;
   25 ! }
   26
   27 %begin
				.set	nomips16
				.set	nomicromips
				.ent	main
		main:
				.frame	$sp,32,$31		# vars= 0, regs= 1/0, args= 16, gp= 8
				.mask	0x80000000,-4
				.fmask	0x00000000,0
				.set	noreorder
				.set	nomacro
				LVL3 = .
				addiu	$sp,$sp,-32
				sw	$31,28($sp)
				lui	$28,%hi(__gnu_local_gp)
				addiu	$28,$28,%lo(__gnu_local_gp)
				.cprestore	16
   28   %integer i           ;! int I;
				lw	$25,%call16(_imp_initialise)($28)
				.reloc	1f,R_MIPS_JALR,_imp_initialise
			1:	jalr	$25
				nop
				LVL4 = .
				lw	$28,16($sp)
				LVL5 = .
				LVL6 = .
				LBB4 = .
				LBB5 = .
				move	$4,$0
				lw	$25,%call16(exit)($28)
				.reloc	1f,R_MIPS_JALR,exit
			1:	jalr	$25
				nop
				LVL7 = .
				LBE5 = .
				LBE4 = .
				.set	macro
				.set	reorder
				.end	main
		$LFE188:
				.comm	OI1.6005,4,4
		$Letext0:
   29   %integername zz      ;! int *ZZ;
   30   zz == xm1(whatever)  ;! ZZ = XM1(&whatever);
   31   i = zz               ;! I = *ZZ;
   32 %end
   33
   34 %endoffile
   16 Statements compiled
