İçeriğe atla

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.

İlgili Araştırma Makaleleri

<span class="mw-page-title-main">C (programlama dili)</span> programlama dili

C, yapısal bir programlama dilidir. Bell Laboratuvarları'nda, Ken Thompson ve Dennis Ritchie tarafından UNIX işletim sistemini geliştirebilmek amacıyla B dilinden türetilmiştir. Geliştirilme tarihi 1972 olmasına rağmen yaygınlaşması Brian Kernighan ve Dennis M. Ritchie tarafından yayımlanan "C Programlama Dili" kitabından sonra hızlanmıştır. Günümüzde neredeyse tüm işletim sistemlerinin yapımında %95'lere varan oranda kullanılmış, hâlen daha sistem, sürücü yazılımı, işletim sistemi modülleri ve hız gereken her yerde kullanılan oldukça yaygın ve sınırları belirsiz oldukça keskin bir dildir. Keskinliği, programcıya sonsuz özgürlüğün yanında çok büyük hatalar yapabilme olanağı sağlamasıdır. Programlamanın gelişim süreciyle beraber programlamanın karmaşıklaşması, gereksinimlerin artması ile uygulama programlarında nesne yönelimliliğin ortaya çıkmasından sonra C programcıları büyük ölçüde nesne yönelimliliği destekleyen C++ diline geçmişlerdir.

Komut kümesi mimarisi, CPU'nun yazılım tarafından nasıl kontrol edileceğini tanımlayan bilgisayar soyut modelinin bir parçasıdır. ISA, işlemcinin ne yapabileceğini ve bunu nasıl yapacağını belirterek donanım ve yazılım arasında bir arayüz gibi davranır.

<span class="mw-page-title-main">Derleyici</span> kaynak kodunu bilgisayarın işleyebileceği koda dönüştüren program

Derleyici, kaynak kodu makine koduna dönüştüren yazılımdır. Bir programlama dilinin derleyicisi, o programlama dili kullanılarak yazılmış olan kodu hedef işlemci mimarisine göre uygun şekilde makine koduna derler ve genellikle çıktı olarak yürütülebilir dosyanın oluşturulmasını sağlar. Bu eyleme derleme denir. Bir başka ifadeyle derleyici, bir tür yazı işleyicidir; girdi olarak yazı alır ve çıktı olarak yazı verir.

<span class="mw-page-title-main">Mikrodenetleyici</span>

Mikrodenetleyici bir VLSI entegre devre çipinde küçük bir bilgisayar'dır. Mikrodenetleyici, bellek ve programlanabilir giriş/çıkış çevre birimleri ile birlikte bir veya daha fazla CPU kapsar.

<span class="mw-page-title-main">Merkezî işlem birimi</span> bir bilgisayar programının talimatlarını, talimatlar tarafından belirtilen temel aritmetik, mantıksal, kontrol ve giriş/çıkış (G/Ç) işlemlerini gerçekleştirerek yürüten ve diğer bileşenleri koordine eden bir bilgisayar içindeki elektro

Merkezî işlem birimi, dijital bilgisayarların veri işleyen ve yazılım komutlarını gerçekleştiren bölümüdür. Çalıştırılmakta olan yazılımın içinde bulunan komutları işler. Mikroişlemciler ise tek bir yonga içine yerleştirilmiş bir merkezî işlem birimidir. 1970'lerin ortasından itibaren gelişen mikroişlemciler ve bunların kullanımı, günümüzde MİB teriminin genel olarak mikroişlemciler yerine de kullanılması sonucunu doğurmuştur.

<span class="mw-page-title-main">Unicode</span> endüstri standartı

Unicode Unicode Consortium organizasyonu tarafından geliştirilen ve her karaktere bir sayı değeri karşılığı atayan bir endüstri standardıdır. Sistemin amacı farklı karakter kodlama sistemlerinin birbiriyle tutarlı çalışmasını ve dünyadaki tüm yazım sistemlerinden metinlerin bilgisayar ortamında tek bir standart altında temsil edilebilmesini sağlamaktır. Evrensel Karakter Kümesi (UCS) olarak bilinen ISO/IEC 10646 standardı ise, her iki organizasyonun işbirliği ile aynı sayısal karşılıkları taşımaktadır. Unicode, son sürümü itibarıyla 129 farklı modern ve tarihî yazım sistemine ait 120.000'den fazla karakteri ve emoji gibi çeşitli sembol kümelerini kapsamaktadır.

<span class="mw-page-title-main">SIP</span>

Oturum başlatma Protokolü (SIP), ses, video ve mesajlaşma uygulamalarını içeren gerçek zamanlı oturumları başlatmak, sürdürmek ve sonlandırmak için kullanılan bir sinyal protokolüdür. VoIP gibi IP üzerinden üzerinden ses, görüntü ve anlık mesaj iletişimi yanı sıra LTE (VoLTE) üzerinden cep telefonu araması için multimedya iletişim oturumlarını sinyalize etmek ve kontrol etmek için kullanılır. Günümüz IP Telefonlarının çoğunluğu SIP Protokolü ile çalışmaktadır. Cisco gibi bazı üreticiler SIP kullanmakla beraber bazı telefon modellerinde SCCP tercih etmektedir.

Yama, bilgisayar programlarında oluşan bir hatayı ya da programın içeriğindeki hatalı bir fonksiyonu düzelten bir programcıktır. Genelde bilgisayarlardaki en büyük güvenlik sorunlarından olan yazılım açıklarına müdahale amacıyla kullanılır.

İndirgenmiş Buyruk Küme Bilgisayar, işlemci tasarım alanında 1980'li yıllarda önerilen ve giderek CISC'in yerini alan bir buyruk kümesi mimarisidir.

<span class="mw-page-title-main">Make</span>

Make dosyaları bir formdan diğerini çevirme işlemini otomatikleştiren bir araçtır. Bu işlemi, çevrilecek programların ihtiyaç duyacağı diğer programları kontrol ettikten sonra gerekli programları çalıştırarak çevirme işlemini gerçekleştirir. Çevrilen programı çalıştırmak için ihtiyaç duyulan diğer programlara bağımlılıklar denir. Unix/Linux tabanlı işletim sistemlerinde, kaynak kodu nesne koduna derlerken ve nesne kodlarını çalıştırılabilir (executable) ve kütüphane (library) dosyalarına bağlarken (linking) sıklıkla kullanılır. Bağımlılık grafiğini çıkarmak için "Makefile" ismi verilen bir dosya kullanır ve shell'e geçirilmek üzere kullanılan betikleri (script) oluşturur.

<span class="mw-page-title-main">Intel 8086</span> Intel tarafından geliştirilmiş bir mikroişlemci yongasıdır

8086 Intel tarafından geliştirilmiş, x86 mimarisi 'nin gelişmesine yol açan 16-bit mimarisinde bir mikroişlemci yongasıdır. Intel tarafından 8086 tasarımının geliştirmesine 1976 yılı baharında başlanmış ve 1978 yılı yaz aylarında ilk çip piyasaya sürülmüştür. 1979 yılında piyasaya sürülen Intel 8088, daha ucuz ve az sayıda çevre birimi kullanımına olanak veren, ayrıca IBM PC tasarımında kullanılan 8254 CTC, 8255 PIO ve 8259 PIC gibi 8080-ailesi çevre birimleri ile uyumlu olacak şekilde 8-bitlik bir data bus eklenerek hafifçe modifiye edilmiş bir versiyondur. İlave olarak daha basit ve ucuz PCB tasarımı gerektirmekte ve daha az sayıda DRAM çipine gereksinim duymaktadır. Intel 8088 orijinal IBM PC tasarımında kullanılan işlemci olması özelliğiyle de kayda değerdir.

Kontrol Akış Çizelgesi (Control Flow Graph (CFG)), bir program yürütülürken içinden geçebilecek bütün yolların çizelge simgeleri kullanılarak gösterimidir.

<span class="mw-page-title-main">Assembly</span> uygulanan işlemlerle programlama dilinin birbirine çok yakın olduğu düşük seviye programlama dilleri

Assembly dili, bir işlemcinin komut kümesi üzerine tanımlanmış alt seviye bir dildir. Assembly dili kolay hatırlanabilir semboller tanımlar ve böylece işlemcinin makina koduna karşılık gelen sayı dizilerinin bilinmesine gerek kalmaz. Assembly dili, platformdan bağımsız yüksek seviyeli programlama dillerinin aksine, işlemci mimarisine bağımlıdır. Tipik uygulamaları; cihaz sürücüleri, alt seviyeli dahili (embedded) ve gerçek zamanlı sistemlerdir. Bır assembly programı assembler kullanılarak makine koduna çevrilir.

<span class="mw-page-title-main">Bilgisayar mimarisi</span>

Bilgisayar mimarisi, en küçüğe ve en başarılıya ulaşmayı hedeflerken aynı zamanda maliyeti de göz önünde bulundurduğu için sanat ve bilimin ortak buluştuğu nokta olarak da tanımlanır. Bilgisayar Mimarisi, bilgisayar parçalarının iç yapıları ve aralarındaki haberleşme bağlantıları ile ilgilidir.

Microsoft Visual Studio, Microsoft tarafından geliştirilen bir tümleşik geliştirme ortamıdır (IDE). Microsoft Windows, Windows Mobile, Windows CE, .NET Framework, .NET Compact Framework ve Microsoft Silverlight tarafından desteklenen tüm platformlar için yönetilen kod ile birlikte yerel kod ve Windows Forms uygulamaları, web siteleri, web uygulamaları ve web servisleri ile birlikte konsol ve grafiksel kullanıcı arayüzü uygulamaları geliştirmek için kullanılır.

Uzak yordam çağrısı (ya da uzak prosedür çağrısı; İngilizce: Remote Procedure Call , bir diğer adres uzayı üzerinde programcı açıkça bu uzaktan etkileşim detayları kodlama olmadan çalıştırmak için bir alt yordam veya prosedürü sağlayan bilgisayar programına izin veren süreçler arası iletişim teknolojisidir. Sunucu üzerindeki servisleri kontrol ettiğimizde karşımıza çıkan RPC, arka plânda birçok şeyi gerçekleştiren bir servistir. RPC, temelde istemci ve sunucu arasında yapılan işlemlerin iletişimi için tasarlandı. Bir işlemin gerçekleşmesi için bir gönderici ve bir de istemci vardır.. Yani programcı, alt prosedür ister çalışan programın yerelinde ister uzağında olsun, temelde aynı kodu yazar. Bu bir tür istemci-sunucu etkileşimidir ve tipik olarak bir istek-yanıt mesaj geçirme sistemi aracılığıyla uygulanır. Nesne yönelimli programlama modelinde, RPC'ler uzaktan yöntem çağırma ile temsil edilir. RPC modeli bir konum şeffaflığı seviyesini ifade eder, yani çağrı prosedürleri yerel ya da uzak olsun büyük ölçüde aynıdır, ancak genellikle aynı değildirler, bu nedenle yerel çağrılar uzak çağrılardan ayırt edilebilir. Uzak çağrılar genellikle yerel çağrılardan çok daha yavaş ve daha az güvenilirdir, bu nedenle bunları ayırt etmek önemlidir.

<span class="mw-page-title-main">Java sanal makinesi</span>

Java Sanal Makinesi (JSM), Java platformunun nesne modülü formatı olan class uzantılı sınıf dosyalarının belleğe yüklenip çalıştırılması için gereken hizmetleri sunan bir sistem programıdır ve temel görevinin sınıf dosyalarını yorumlamak olduğu söylenebilir. Ancak, JSM'ni salt bir yorumlayıcı olarak görmek büyük haksızlık olur. Zira, yorumlama ile birlikte JSM'nin şu görevleri de vardır.

<span class="mw-page-title-main">Git (yazılım)</span> dağıtılmış iş kontrol sistemi

Git, yazılım geliştirme süreçlerinde kullanılan, hız odaklı, dağıtık çalışan bir sürüm kontrol ve kaynak kod yönetim sistemidir. İlk sürümü Linux çekirdeği'nin geliştirilmesinde kullanılmak üzere 2005 yılında bizzat Linus Torvalds tarafından tasarlanıp geliştirilmiş, 2021 yılı itibarıyla %73 pazar payına ulaşmıştır.

<span class="mw-page-title-main">Erişilmez kod</span>

Erişilmez kod bilgisayar programlamada programın başka yerlerinden kontrol akışı olmayan kaynak koduna verilen addır.

<span class="mw-page-title-main">Ayrıştırıcı (yazılım)</span>

Ayrıştırıcı, girdi verilerini alır ve girdinin yapısal bir temsilini vererek, süreçte doğru sözdizimini kontrol eden bir veri yapısı oluşturan bir yazılım bileşenidir. Ayrıştırma öncesinde veya sonrasında başka adımlar izlenebilir veya bunlar tek bir adımda birleştirilebilir. Ayrıştırıcı, genelde girilen karakter dizisinden belirteçler oluşturan ayrı bir sözcük tabanlı analiz motorunu takip eder. Ayrıştırıcılar elle programlanabilir veya bir ayrıştırıcı üreteci tarafından otomatik olarak veya yarı otomatik olarak oluşturulabilir. Ayrıştırma, biçimlendirilmiş çıktı üretimlerini tek bir şablonda tamamlama görevi görür. Bunlar, farklı etki alanlarına uygulanabilir, ancak bir derleyicinin girdi ve çıktı aşamaları gibi genellikle bir arada sunulur.