Assembler’ın İşlevi
Assembler, bir bilgisayarın işlemci yapısı için özelleştirilmiş düşük seviye dillerden başka bir şeye dönüştürme işlemi yapan bir programdır. İkincil dil genellikle makine kodu veya nesne kodu olarak adlandırılır ki bu, bilgisayarın işlemcisinin doğrudan yürütebildiği bir formattır. Bu dönüştürme metni veya sembollerden işlemci komutlarına dönüştürür. Assembler’ın ana işlevi, yüksek seviye programlama dillerinde yazılan kodları, bilgisayarın işlemcisinin anlayabileceği makina kodlarına çevirmektir.
Detaylı Bir Bakış
Bir assembly dilinde yazılan programlar genellikle assembler tarafından bilgisayarın anlayabileceği dile çevrilir. Makine dili, zero ve one’lar içeren bir dildir. Bu çok sıkıcı ve karmaşık olabilir, bu yüzden assembly dilini kullanmak daha basit ve daha az hata yapılabilir hale getirir. Assembler, bu işlemin karmaşıklığını azaltır ve programlama sürecini kolaylaştırır.
Assembler’ın Kullanım Alanları
Assembler genellikle belirli bir bilgisayar mimarisine özelleştirilmiş yazılımların yaratılmasında kullanılır. Örneğin, işletim sistemleri, sıkıştırılmış dosyalar, düşük seviye donanım erişimi gerektiren her tür yazılım ve performansın önemli olduğu durumlarda Assembler kullanılır.
Detaylı Kullanım Alanları
Assembler bazı spesifik durumlarda faydalı olabilir:
-
Hatalı kod analizi: Assembler, belirli bir işlemcinin makine kodunu okuma becerisine sahip olması nedeniyle, koddaki hataları bulma ve belirli programların hangi işlemlerde yanlış gittiğini anlama konusunda etkili olabilir.
-
Gömülü Sistemler: Assembler, gömülü sistemlerde (örneğin, mikrokontroller, sensörler, vb.) verimli bir şekilde kullanılır çünkü bu sistemler genellikle sınırlı kaynaklara sahiptir ve bu nedenle kaynak kullanımını en aza indirmenin yolları üzerine önemli bir vurgu yaparlar.
Tarihsel Gelişimi
Bilgisayarlar ilk geliştirildiğinde, programlar doğrudan makine diliyle yazılmıştır. Bu işlem karmaşık ve hata yapması kolaydı. 1950’lerden itibaren, Assembly dili ve Assembler’lar bu süreci kolaylaştırmak için geliştirilmiştir.
1950’ler ve 1960’lar boyunca Assembler’ler, programlamanın daha üretken hale gelmesine yardımcı olmak için sürekli olarak geliştirilmiştir. Bununla birlikte, 1970’lerin sonlarına doğru, daha yüksek seviyede dillerin gelişmesi ve yaygınlaşmasıyla Assembler’ın kullanımı azalmıştır.
Assemblier’ın hala bazı spesifik kullanım alanları vardır ve hala aktiv olarak kullanılmaktadır, ancak genel itibariyle, modern programlamada daha az yaygın hale gelmiştir.
Örnek Assembler kodu
İşlemci tarafından gerçekleştirilen matematiksel bir işlemi çözen bir örnek kod. İşlemci üzerinde bir sayıyı ikiye bölen bir program yazalım. İşte örnek kod:
section .data
num db 10 ; İşlem yapılacak sayı
section .text
global _start
_start:
mov al, [num] ; Sayıyı al
mov bl, 2 ; Bölme işlemi için böleni belirle
div bl ; Sayıyı bölecek
mov [num], al ; Sonucu num değişkenine kaydet
; Sonucu ekrana yazdır
mov eax, 4 ; write() sistem çağrısı
mov ebx, 1 ; stdout
mov ecx, num ; Yazdırılacak veri
mov edx, 1 ; Verinin uzunluğu
int 0x80 ; Sistem çağrısını gerçekleştir
exit:
mov eax, 1 ; exit() sistem çağrısı
xor ebx, ebx ; Çıkış kodu olarak 0
int 0x80 ; Sistem çağrısını gerçekleştir
Bu örnek kod, num
adlı bir değişkeni alır, bu değişkeni 2’ye böler ve sonucu num
değişkenine kaydeder. Sonucu ekrana yazdırmak için write()
sistem çağrısı kullanılır. Son olarak, exit()
sistem çağrısı kullanılarak program sonlandırılır.
Bu örnek kod, x86 mimarisine sahip bir işlemci için geçerlidir. İşlemcinin farklı bir mimarisi varsa, kodu ona göre uyarlamak gerekebilir.
TERIMLER:
Assembler: Bilgisayar tarafından tanınan makine diline çeviri yaparak işlemci kodları oluşturan bir derleyicidir.
Makine Dili: Bilgisayarların doğrudan anlayabildiği, genellikle ikili formatta olan, düşük seviye bir dildir.
Gömülü Sistemler: Bir bilgisayarın bir başka cihazın parçası olarak işlem yapması gereken durumlar için tasarlanmış özelleştirilmiş bilgisayar sistemlerini ifade eder. Genellikle belirli görevleri yerine getirmek için tasarlanmıştır ve genellikle düşük güç tüketimi ve küçük boyut gerektirir.