1. A method of allocating registers in an assembler, comprising: processing assembler code to avoid a register bank allocation error including at least one of a register bank conflict and an insufficient number of physical registers in target hardware; and automatically manipulating instructions to avoid the register bank allocation error.