         Edinburgh IMP77 Compiler - Version 8.4
    1 %begin
				.section .mdebug.abi32
				.previous
				.nan	legacy
				.module	fp=xx
				.module	nooddspreg
				.abicalls
		$Ltext0:
				.align	2
				.globl	main
				LFB185 = .
				.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
				LVL0 = .
				addiu	$sp,$sp,-32
				sw	$31,28($sp)
				lui	$28,%hi(__gnu_local_gp)
				addiu	$28,$28,%lo(__gnu_local_gp)
				.cprestore	16
    2
				lw	$25,%call16(_imp_initialise)($28)
				.reloc	1f,R_MIPS_JALR,_imp_initialise
			1:	jalr	$25
				nop
				LVL1 = .
				lw	$28,16($sp)
				LVL2 = .
				LVL3 = .
				LBB4 = .
				LBB5 = .
				move	$4,$0
				lw	$25,%call16(exit)($28)
				.reloc	1f,R_MIPS_JALR,exit
			1:	jalr	$25
				nop
				LVL4 = .
				LBE5 = .
				LBE4 = .
				.set	macro
				.set	reorder
				.end	main
		$LFE185:
		$Letext0:
    3   ! Interestingly enough you *can* initialise records in Imp77, but
    4   ! although it *looks* like an integer is being assigned to the first
    5   ! field, I believe it is actually assigning an address and may be
    6   ! related to the special case of assigning 0 to a record.
    7
    8   ! It would be really interesting to see what happens on a traditional
    9   ! imp77 compiler implementation.  I may try this in the Vax emulator.
   10
   11   %recordformat same(%integer i, j)
   12   %ownrecord(same)%array or(0:3) = 42, 3, 17, 11
   13   %constrecord(same)%array cr(0:3) = 142, 13, 117, 111
   14
   15   %recordformat mixed(%real r, %integer i)
   16 ! %ownrecord(mixed)%array orm(0:3) = 42, 3.1415, 17, 2.123
   17 !                                        ^ causes an error.  This is a significant clue.
   18   %ownrecord(same)%array orm2(0:3) = 42, 3, 17, 11
   19   %constrecord(same)%array cr2(0:3) = 142, 13, 117, 111
   20
   21 %endofprogram
?CR2 unused
    0 nused
?MIXED unused
?CR unused
?OR unused
    8 Statements compiled
				.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
				LVL0 = .
				addiu	$sp,$sp,-32
				sw	$31,28($sp)
				lui	$28,%hi(__gnu_local_gp)
				addiu	$28,$28,%lo(__gnu_local_gp)
				.cprestore	16
				lw	$25,%call16(_imp_initialise)($28)
				.reloc	1f,R_MIPS_JALR,_imp_initialise
			1:	jalr	$25
				nop
				LVL1 = .
				lw	$28,16($sp)
				LVL2 = .
				LVL3 = .
				LBB4 = .
				LBB5 = .
				move	$4,$0
				lw	$25,%call16(exit)($28)
				.reloc	1f,R_MIPS_JALR,exit
			1:	jalr	$25
				nop
				LVL4 = .
				LBE5 = .
				LBE4 = .
				.set	macro
				.set	reorder
				.end	main
		$LFE185:
		$Letext0:
