Sun Aug 3 10:57:41 EDT 2014

Subroutine return on ARM

Interesting because ARM uses a link register.  Using this efficiently
is a non-local operation.

  - save lr before every call

  - save lr at procedure entry,
  - but only if there are no calls inside the body

Let's leave the non-local variant as an open problem for now.  Use the
local approach.

call = 
     push {lr}
     bl <...>
     pop {lr}

return =
     bx lr