1. A method of converting program code written for execution by a processor of a first type into target code to be executed by a processor of a second type, wherein the conversion is performed dynamically while the target code is executed by the processor of the second type, the method comprising the computer implemented steps of: decoding the program code and forming at least a first program code block amongst a plurality of program code blocks in the program code; on an initial translation of the first program code block, generating and storing a target code portion which is specialised only to execute that first program code block according to a prevailing set of conditions; executing the target code portion and thereby entering a subsequent one of the plurality of program code blocks; and whenever subsequently the same first program code block is entered, determining whether a target code portion has previously been generated and stored for that first program code block for a now-prevailing subsequent set of conditions, and if no such target code portion has previously been generated, generating an additional target code portion which is specialised to execute said first program code block according to the now-prevailing subsequent set of conditions.