1. A method for compiling a program to use an extended register specification, comprising: specifying a subset of physical registers using a first set of instructions, the subset of physical registers corresponding to a set of physical registers specified by a second set of instructions, the first set of instructions for encoding a set of semantics in accordance with an instruction set specification such that the set of semantics are capable of being encoded only by the first set of instructions; and performing register coloring by: allocating a respective symbolic register from a set of symbolic registers to a respective register class from a set of register classes based on an operation of an intermediate language that references the respective symbolic register as an operand wherein the respective symbolic register, as represented by an identified node, is allocated to the respective register class by: associating the identified node with the respective register class, determining a least restrictive allowable class for the identified node from among any of the register classes in the set that are hierarchically included in the respective register class; and associating a maximum allowable degree with each of the register classes in the set to enable coloring of each of the register classes in the set; generating an interference graph having nodes and edges, the nodes representing the set of symbolic registers, the edges connecting two of the nodes that are concurrently alive; and identifying each of the nodes representing a live range, wherein the register coloring is performed for each of the symbolic registers in the set, the set of register classes are hierarchically arranged, and the set of symbolic registers are capable of being used with respect to the subset of physical registers, support encoding a subset of the set of semantics with the second set of instructions, and correspond to the extended register specification.