[Fikir] IR Komut Seti Tasarımı (Üç-Adresli Kod / Three-Address Code) #74
Labels
No Label
cli-ux
faz-plani
felsefe-gozden-gecir
ffi-builtin
fikir
gelecek-vizyon
ir-vm
kalite-mimari
moduller-import
test-senaryosu
tip-sistemi
tooling-lsp
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: saqut/saqut-compiler#74
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Giriş (Nedir, Neden Önemli?)
Faz 0-4 bitince AST (Abstract Syntax Tree, Soyut Sözdizimi Ağacı) tip ve sembol bilgisiyle dolu olacak. Ama AST hâlâ "ağaç" — VM'in (Bytecode VM, Bayt Kodu Sanal Makinesi) çalıştırabileceği düz bir komut listesi değil. Bu issue, AST'den üretilecek IR'in (Immediate Representation, Ara Temsil) komut setini tartışır.
Gelişme (Olası Yaklaşımlar)
t1 = a + b,t2 = t1 * cgibi her komut en fazla bir işlem yapar. Okunabilirlik (alet çantası felsefesiyle uyumlu —saqut irile basılabilir) ile uygulama kolaylığı arasında iyi bir denge.add/sub/mul/div), karşılaştırma, atama (store/load), kontrol akışı (jump/jump_if_false/label), fonksiyon (call/return), dizi/struct erişimi (get_field/set_field/get_index/set_index).SourceLocation'ı taşımalı — hata mesajları ve "öncesi/sonrası" karşılaştırması için (alet çantası amacı).examples/fibonacci.sqtiçin elle IR çıktısı yazılıp hedef format netleştirilebilir (taslak doküman olarak).Açık Sorular
İmza/Yorum: Bu issue, "IR güçlendirme" yol haritasının (roadmap-frontend.md sonu) ilk taslağıdır. Faz 0-4 bitmeden kilitli karar alınmamalı — sadece beyin fırtınası.
Kararlar uygulamada netleşti: üç-adresli IR + stack-tabanlı VM seçildi.
saqut irile IR dump çalışıyor,saqut runfibonacci'yi çalıştırıyor. Açık sorular yanıtlandı.