Just a couple of annoying nitpicks:<p>&gt; * Most operations on registers, like addition and subtraction, have the side effect of altering status flags, like &quot;the last value computed resulted in zero&quot;. There are just a few status flags, and they usually live in a special register.<p>Note that this is a CISCism. Most RISC designs, like ARM, allow the compiler to specify whether condition codes are to be updated in order to more easily eliminate false dependencies.<p>&gt; * A CALL is just an unconditional GOTO that pushes the next address on the stack, so a RET instruction can later pop it off and keep going where the CALL left off.<p>Also a CISCism. Most RISC designs have a &quot;link register&quot; that the return address goes into, and the stack push, if desired, has to be done manually. RET is, in this case, just an unconditional branch to the address in LR.