1. A computer readable storage medium having encoded thereon computer readable program code for encoding source code for execution on a microprocessor system having a plurality of registers in a register bank wherein at least one register is defined as an argument register, at least one register is defined as a static register, at least one register is defined as a stack pointer register, and at least one register is defined as a return address register, the computer readable program code comprising: computer readable program code for encoding in an instruction whether any or all of the argument registers are to be treated as static registers; computer readable program code for encoding in an instruction whether the at least one static register is to be saved to a region of memory upon entry to a subroutine wherein the value of the at least one static register is saved on a stack to preserve the value for the program that called the subroutine; and computer readable program code for encoding in an instruction whether a value in the at least one return address register is to be saved to a region of memory upon entry to a subroutine.