Alocação de Registos: Teoria e Prática em Compiladores