         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,1560,$31		# vars= 1288, regs= 1/0, args= 256, gp= 8
				.mask	0x80000000,-4
				.fmask	0x00000000,0
				.set	noreorder
				.set	nomacro
				LVL0 = .
				addiu	$sp,$sp,-1560
				sw	$31,1556($sp)
				lui	$28,%hi(__gnu_local_gp)
				addiu	$28,$28,%lo(__gnu_local_gp)
				.cprestore	256
				lw	$2,%got(__stack_chk_guard)($28)
				lw	$2,0($2)
				sw	$2,1548($sp)
    2
				lw	$25,%call16(_imp_initialise)($28)
				.reloc	1f,R_MIPS_JALR,_imp_initialise
			1:	jalr	$25
				nop
				LVL1 = .
				lw	$28,256($sp)
				LVL2 = .
    3   ! %prim     %byte %integer  %map  %spec   charno( %string(255) s,%integer n )
    4
    5   %byteintegermap my charno(%string(255) s, %integer n)
    6     %result == BYTEINTEGER(ADDR(s)+n)
    7   %end
    8
    9   %string(255) string = "00"
   10
   11   my charno(string,1) = '1'   ;! <-- does not affect string
   12   charno(string, 2) = '2'     ;! <-- *does* modify string even though the prim
				li	$6,255			# 0xff
				addiu	$5,$sp,524
				addiu	$4,$sp,268
				lw	$25,%call16(_imp_strncpy)($28)
				.reloc	1f,R_MIPS_JALR,_imp_strncpy
			1:	jalr	$25
				nop
				LVL3 = .
				lw	$28,256($sp)
				li	$2,50			# 0x32
				sb	$2,270($sp)
				addiu	$2,$sp,780
				addiu	$3,$sp,1036
				move	$4,$3
		$L2:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L2
				addiu	$3,$3,16
				LBB33 = .
				LBB34 = .
				addiu	$2,$sp,1052
				addiu	$3,$sp,16
				addiu	$4,$sp,1292
		$L3:
				lw	$8,0($2)
				lw	$7,4($2)
				lw	$6,8($2)
				lw	$5,12($2)
				sw	$8,0($3)
				sw	$7,4($3)
				sw	$6,8($3)
				sw	$5,12($3)
				addiu	$2,$2,16
				bne	$2,$4,$L3
				addiu	$3,$3,16
				lw	$4,1036($sp)
				lw	$5,1040($sp)
				lw	$6,1044($sp)
				lw	$7,1048($sp)
				lw	$25,%call16(_imp_printstring)($28)
				.reloc	1f,R_MIPS_JALR,_imp_printstring
			1:	jalr	$25
				nop
				LVL4 = .
				lw	$28,256($sp)
				LBE34 = .
				LBE33 = .
				LBB35 = .
				LBB36 = .
				lw	$25,%call16(_imp_newline)($28)
				.reloc	1f,R_MIPS_JALR,_imp_newline
			1:	jalr	$25
				nop
				LVL5 = .
				lw	$28,256($sp)
				LVL6 = .
				LBE36 = .
				LBE35 = .
				LBB37 = .
				LBB38 = .
				move	$4,$0
				lw	$25,%call16(exit)($28)
				.reloc	1f,R_MIPS_JALR,exit
			1:	jalr	$25
				nop
				LVL7 = .
				LBE38 = .
				LBE37 = .
				.set	macro
				.set	reorder
				.end	main
		$LFE185:
		$Letext0:
   13                                !     declaration is the same as my local one.
   14
   15   printstring(string); newline  ;! This outputs: 02
				li	$2,49			# 0x31
				sb	$2,1293($sp)
   16
   17 %endofprogram
   10 Statements compiled
