1. A method of integrated instruction scheduling and register allocation comprising: selecting at least one instruction region; and resolving resource constraints for one or more instructions in the instruction region using a finite state machine.