1. A method for generating an intermediate representation of program code written for running on a progammable machine, said method comprising: (i) generating a plurality of register objects for holding variable values to be generated by the program code; and (ii) generating a plurality of expression objects representing fixed values and/or relationships between said fixed values and said variable values according to said program code; wherein at least one variable sized register is represented by plural register objects, one register object being provided for each possible size of the variably sized register.