Lisans eğitimimde derleyiciler üzerine bir ders aldım; burada, Java benzeri bir dilde kaynak programları bir oyuncak montaj diline (bir tercümana sahip olduğumuz) derleyen bir derleyici yazdık. Projede, hedef makine hakkında "gerçek" yerel yürütülebilir dosyalar ile yakından ilişkili bazı varsayımlar yaptık:
- özel bir yığın işaretçisi ("SP") kaydı tarafından izlenen bir çalışma zamanı yığını
- özel bir yığın işaretçisi ("HP") kaydı tarafından izlenen dinamik nesne ayırma yığını
- özel bir program sayaç kaydı ("PC")
- hedef makinenin 16 kaydı var
- Veriler üzerindeki işlemler (örn. atlamaların aksine) kayıttan kayıt işlemlerine
Birime kayıt tahsisini optimizasyon olarak kullanma konusuna geldiğimizde beni meraklandırdı: Böyle bir makine için teorik minimum kayıt sayısı nedir? Varsayımlarımıza göre derleyicimizde beş kayıt (SP, HP, PC, artı ikili işlem için depolama olarak kullanılmak üzere) kullandığımızı görebilirsiniz. Kayıt tahsisi gibi optimizasyonlar kesinlikle daha fazla kayıttan yararlanabilirken, yığın ve yığın gibi yapıları korurken daha azıyla uğraşmanın bir yolu var mı? Kayıt adreslemeyle (kayıttan kayıt işlemlerine) en az iki kayda ihtiyacımız var, ama ikiden fazlasına ihtiyacımız var mı?