annotate lab4/test/rep3.p @ 0:bfdcc3820b32

Basis
author Mike Spivey <mike@cs.ox.ac.uk>
date Thu, 05 Oct 2017 08:04:15 +0100
parents
children
rev   line source
mike@0 1 proc foo(): integer;
mike@0 2 var i: integer;
mike@0 3 begin
mike@0 4 i := 3;
mike@0 5 repeat
mike@0 6 i := i + 2;
mike@0 7 if i > 10 then return i end;
mike@0 8 until false
mike@0 9 end;
mike@0 10
mike@0 11 begin
mike@0 12 print_num(foo()); newline()
mike@0 13 end.
mike@0 14
mike@0 15 (*<<
mike@0 16 11
mike@0 17 >>*)
mike@0 18
mike@0 19 (*[[
mike@0 20 @ picoPascal compiler output
mike@0 21 .include "fixup.s"
mike@0 22 .global pmain
mike@0 23
mike@0 24 @ proc foo(): integer;
mike@0 25 .text
mike@0 26 _foo:
mike@0 27 mov ip, sp
mike@0 28 stmfd sp!, {r4-r10, fp, ip, lr}
mike@0 29 mov fp, sp
mike@0 30 @ i := 3;
mike@0 31 mov r4, #3
mike@0 32 .L2:
mike@0 33 @ i := i + 2;
mike@0 34 add r4, r4, #2
mike@0 35 @ if i > 10 then return i end;
mike@0 36 cmp r4, #10
mike@0 37 ble .L2
mike@0 38 mov r0, r4
mike@0 39 ldmfd fp, {r4-r10, fp, sp, pc}
mike@0 40 .ltorg
mike@0 41
mike@0 42 pmain:
mike@0 43 mov ip, sp
mike@0 44 stmfd sp!, {r4-r10, fp, ip, lr}
mike@0 45 mov fp, sp
mike@0 46 @ print_num(foo()); newline()
mike@0 47 bl _foo
mike@0 48 bl print_num
mike@0 49 bl newline
mike@0 50 ldmfd fp, {r4-r10, fp, sp, pc}
mike@0 51 .ltorg
mike@0 52
mike@0 53 @ End
mike@0 54 ]]*)