Fonksiyonel ara formun dezavantajları


16

JavaScript'e benzer bir dil için bir optimize edici yazıyorum ve bir ara kod temsili seçmem gerekiyor. Bugünlerde bariz / tipik seçim Statik Tekil Atama'dır (SSA).

Bununla birlikte, C'deki Modern Derleyici Uygulaması, aynı zamanda temel olarak ara gösterim için saf işlevselliğe gitme anlamına gelir (sadece yerel değişkenler açısından saf, yığın verileri hala değiştirilebilir ve CPS değil, sadece basit letbloklar ve kuyruk çağrıları) ve akıl yürütmenin daha kolay olması açısından bazı avantajları vardır.

Muhtemelen bu bir beyinsiz değildir ya da herkes zaten böyle bir temsili kullanıyor olurdu, bu yüzden sorum şu: işlevsel ara formun SSA'ya kıyasla ne dezavantajları var?


3
Bu ara form üzerinde ne tür bir analiz yapacaksınız? SSA, ölü kodların ortadan kaldırılması, sürekli yayılma, kısmi uzmanlaşma ve benzeri işlemler için harikadır. Bu tür şeyler menünüzde değilse, SSA'yı atlayabilir ve daha basit analiz geçişleri için daha rahat bir gösterim kullanabilirsiniz. Ancak, bir SSA formu oluşturmak oldukça önemsiz bir görevdir ve SSA'yı kolayca CPS'ye dönüştürebilirsiniz (ve tersi), bu da faydaları iki katına çıkarır.
SK-logic

Evet, hemen hemen tüm moniteyi hedefliyorum ve giriş dili ve çıktı biçimi (başlangıçta C ++) her ikisi de zorunlu dillerdir.
rwallace

Bir SSA formu oluşturmak oldukça önemsiz bir görevdir ve SSA'yı kolayca CPS'ye dönüştürebilirsiniz, ayrıca CPS'yi SSA'ya dönüştürebilirsiniz, bu da faydaları ikiye katlar.
Leon Alexis Cardinal

Yanıtlar:


1

SSA, ölü kodların ortadan kaldırılması, sürekli yayılma, kısmi uzmanlaşma ve benzeri işlemler için harikadır. Bu tür şeyler menünüzde değilse, SSA'yı atlayabilir ve daha basit analiz geçişleri için daha rahat bir gösterim kullanabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.