basic register allocation