A Register Allocation Algorithm For Automatic Microcode-Generation Systems