         Edinburgh IMP77 Compiler - Version 8.4
    1 %begin
				.machine ppc
				.section	".text"
		.Ltext0:
				.align 2
				.globl main
		main:
		.LFB185:
		.LVL0:
				stwu 1,-1568(1)
				mflr 0
				stw 0,1572(1)
				lwz 9,-28680(2)
				stw 9,1564(1)
				li 9,0
    2
				bl _imp_initialise
		.LVL1:
    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 5,255
				addi 4,1,540
				addi 3,1,284
				bl _imp_strncpy
		.LVL2:
				li 9,50
				stb 9,286(1)
				li 5,256
				addi 4,1,796
				addi 3,1,1052
				bl memcpy
		.LVL3:
		.LBB33:
		.LBB34:
				li 5,256
				addi 4,1,1052
				addi 3,1,16
				bl memcpy
		.LVL4:
				addi 3,1,16
				bl _imp_printstring
		.LVL5:
		.LBE34:
		.LBE33:
		.LBB35:
		.LBB36:
				bl _imp_newline
		.LVL6:
		.LBE36:
		.LBE35:
		.LBB37:
		.LBB38:
				li 3,0
				bl exit
		.LVL7:
		.LBE38:
		.LBE37:
		.LFE185:
		.Letext0:
   13                                !     declaration is the same as my local one.
   14
   15   printstring(string); newline  ;! This outputs: 02
				li 9,49
				stb 9,1309(1)
   16
   17 %endofprogram
   10 Statements compiled
