[Fikir] Fonksiyon Çağrı Mekanizması ve Call Frame Tasarımı #78
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#78
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?)
examples/fibonacci.sqtözyinelemeli (recursive) bir fonksiyon. VM'in fonksiyon çağrılarını (call/return), parametreleri ve yerel değişkenleri nasıl tuttuğu — yani call frame (çağrı çerçevesi) tasarımı — özyinelemenin doğru çalışması için kritik.Gelişme (Olası Yaklaşımlar)
Açık Sorular
İmza/Yorum: Bu issue VM tasarımı (önceki issue) seçimine bağımlıdır; ama fibonacci'nin "bitti" tanımı (recursive + iterative) bu mekanizma olmadan anlamsızdır — birinci öncelikli IR/VM konusu.
Call frame tasarımı uygulandı: derleme zamanında slot sayısı hesaplanır, dönüş değeri stack üstüne konur. Özyinelemeli + iteratif fibonacci ikisi de çalışıyor.
Düzeltme: dönüş değeri yığına değil, caller'ın
returnDestSlot'una doğrudan yazılıyor — register-tabanlı modelle tutarlı (bkz. #76 düzeltmesi).