Temel blok

Temel blok, programlamada atlamasız veya hedef atlamasız-hedef atlamaları bloğu başlatır, atlamalar bloğu bitirir-düz çizgi kod parçalarıdır. Genelde temel bloklar, derleyici kuramda derleyici eniyilemelerin uygulandığı temel birimlerdir. Temel bloklar, kontrol akış çizelgesinde köşeleri ya da düğümleri oluştururlar.

Eğer her bir konumdaki komut baskın olursa ya da her zaman bir sonraki konumlardan önce çalışır ve dizideki iki komut arasında başka bir komut çalışmazsa, komut dizisi temel blok oluşturur denir.Bu tanım birçok yönden daha genel.Örneğin;başka atlamalar tarafından hedef alınmamış etiketlere koşulsuz atlamalara izin veriyor.Bu tanım,algoritma oluştururken temel blokla çalışmanın kolay olduğu özellikleri somutlaştırıyor.
Bloğun bitimine ulaştıktan sonra kontrolün gönderilebileceği bloklara o bloğun ardılları denir. Bloğa girerken kontrolün gelebileceği bloklara o bloğun öncülleri denir.
Kod listelemesinden temel blok oluşturma algoritması basittir:kodu tararsın, blok sınırlarını(kontrol gönderip, kontrol alabildiği için bloğu başlatıp, bitirebilen komutlar)işaretlersin.Sonra, listeleme bu noktalardaki "ani geçiş"olur ve temel blok kalır.Bu yöntem her zaman en büyük temel blokları oluşturmaz ama çoğu zaman yeterlidir.
Temel bloğu bitiren komutlar şunları içerir:
 Koşulsuz ve koşullu dallar, dolaysız ve dolaylı
 Çağırılan yordama dönüşler
 Ayrıklık atabilen komutlar
 İşlev çağrıları temel blokların sonunda olabilir, eğer dönmüyorlarsa(ayrıklık atan fonksiyonlar ya da C'deki longjmp ve exit çağrıları gibi)
Temel bloğu başlatan komutlar şunları içerir:
 Yordam ve işlev giriş noktaları
 Atlamaların hedefleri ya da dallar
 Bazı koşullu dalları izleyen "düşük geçiş"komutları
 Ayrıklık atan komutları izleyen komutlar
 Ayrıklık kotarıcıları
Kontrol, temel bloğun bitiminden geçemediği için;bazı sınırları, temel blokları bulduktan sonra düzeltilmek zorunda kalabilir.Belirtecek olursak düşük geçiş koşullu dallar, çift yönlü dallara çevrilmelidir.Bunları yapmak, başka blokların başlangıçlarına eklemeyi gerektirebilir.

Kategori:Programlama