1. A method of processing instructions using a processing unit capable of out-of-order processing and having architectural registers having an architectural state, comprising: preparing groups of instructions for processing by the processing unit, wherein within each group to be processed the instructions producing the final state of an architectural register are changed so that they write to an output copy of the architectural state, the instructions reading architectural registers are changed to read from an input copy of the architectural state, and the instructions within each group producing results to architectural registers that would be overwritten by another instruction in the group are changed to write their results to temporary registers.