CodeBlanks Logo Icon CodeBlanks

Özet - Compiler

SSA, escape ve inline'ı birleştirerek bir derleme analizi yazarsın.

Derleyici özeti

Kaynak → tür denetimi → IR (kaçış analizi + inlining) → SSA (sabit katlama, ölü kod, BCE) → makine kodu → bağlama. İnceleme araçların: -gcflags=-m (kaçış ve inlining), -gcflags=-S (assembly), GOSSAFUNC (SSA aşamaları), -d=ssa/check_bce (sınır denetimleri). Yönergelerle (//go:build, //go:embed, //go:noinline) derleyiciye talimat verirsin.

Okunurluk önce gelir

Derleyici bilgisi, profil gösterdiği sıcak noktalarda kullanılmalıdır. Kodun her yerine BCE ipucu ve noinline eklemek okunurluğu düşürür ve sonraki Go sürümlerinde gereksiz hâle gelebilir; derleyici her sürümde daha akıllı hâle gelir. Kural: ölç, sıcak noktayı bul, değişikliği benchmark ile doğrula.

Uygulama Yığında kalan tampon

Sabit boyutlu dizi kullanarak ayırmasız bir fonksiyon yaz: hex(b byte) string içinde var buf [2]byte doldur ve string(buf[:]) döndür. hex(255) sonucunu yazdır (çıktı ff).

Başlangıç kodu

main.go
package main

import "fmt"

func main() {
    // buraya yaz
}

Örnek çözüm

main.go
package main

import "fmt"

const rakam = "0123456789abcdef"

func hex(b byte) string {
    var buf [2]byte
    buf[0] = rakam[b>>4]
    buf[1] = rakam[b&0x0f]
    return string(buf[:])
}

func main() {
    fmt.Println(hex(255))
}

Beklenen çıktı

ff

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Sıcak bir fonksiyon her çağrıda heap ayırıyorsa ilk hangi çıktıya bakarsın?

  • go mod tidy
  • gofmt -d
  • go build -gcflags=-m Doğru cevap
  • go vet

Açıklama: -m çıktısı hangi değişkenin neden heap'e kaçtığını satır numarasıyla söyler.

2 SSA görselleştirme

Soru
____=topla go build .
Cevap
GOSSAFUNC=topla go build .

Açıklama: GOSSAFUNC verilen fonksiyonun tüm SSA aşamalarını ssa.html dosyasına çizer.

3 Grubun özeti

Kavram Anlamı
Kaçış analizi Yığın mı heap mi?
Inlining Çağrıyı gövdeyle değiştir
SSA Optimizasyon biçimi
//go:build Koşullu derleme

Uzman bölümündeki tüm dersler