annotate lab4/test/spill.p @ 1:b5139af1a420 tip basis

Fixed permissions on compile scripts
author Mike Spivey <mike@cs.ox.ac.uk>
date Fri, 13 Oct 2017 17:27:58 +0100
parents bfdcc3820b32
children
rev   line source
mike@0 1 (* Spill result of function call *)
mike@0 2
mike@0 3 proc f(x: integer): integer;
mike@0 4 begin
mike@0 5 return x
mike@0 6 end;
mike@0 7
mike@0 8 begin
mike@0 9 print_num(f(3)+f(4)); newline()
mike@0 10 end.
mike@0 11
mike@0 12 (*<<
mike@0 13 7
mike@0 14 >>*)
mike@0 15
mike@0 16 (*[[
mike@0 17 @ picoPascal compiler output
mike@0 18 .include "fixup.s"
mike@0 19 .global pmain
mike@0 20
mike@0 21 @ proc f(x: integer): integer;
mike@0 22 .text
mike@0 23 _f:
mike@0 24 mov ip, sp
mike@0 25 stmfd sp!, {r0-r1}
mike@0 26 stmfd sp!, {r4-r10, fp, ip, lr}
mike@0 27 mov fp, sp
mike@0 28 @ return x
mike@0 29 ldr r0, [fp, #40]
mike@0 30 ldmfd fp, {r4-r10, fp, sp, pc}
mike@0 31 .ltorg
mike@0 32
mike@0 33 pmain:
mike@0 34 mov ip, sp
mike@0 35 stmfd sp!, {r4-r10, fp, ip, lr}
mike@0 36 mov fp, sp
mike@0 37 @ print_num(f(3)+f(4)); newline()
mike@0 38 mov r0, #3
mike@0 39 bl _f
mike@0 40 mov r4, r0
mike@0 41 mov r0, #4
mike@0 42 bl _f
mike@0 43 mov r5, r0
mike@0 44 add r0, r4, r5
mike@0 45 bl print_num
mike@0 46 bl newline
mike@0 47 ldmfd fp, {r4-r10, fp, sp, pc}
mike@0 48 .ltorg
mike@0 49
mike@0 50 @ End
mike@0 51 ]]*)