Yazan : Şadi Evren ŞEKER
Bilgisayar bilimlerinde iki farklı kavram için assembler kelimesi kullanılmaktadır. Birincisi Assembly dili adı verilen ve makine diline (machine language) çok yakın düşük seviyeli (low level language) için kullanılan ve nesne kodunu (object code) makine koduna (machine code) çeviren dildir. İkincisi ise birleştirmek, monte etmek anlamında örneğin nesne yönelimli dillerde nesnelerin birleştirilmesi monte edilip büyük parçaların çıkarılması anlamında kullanılmaktadır.
Assembly dili, CPU üzerinde programcıya tanınmış olan yönergeleri (instructions) alarak bunları işlemcinin doğrudan çalıştırdığı makine kodları haline getirir. CPU üzerindekik bu yönergeler genelde üretici tarafından belirlenir ve tamamen teknoloji bağımlıdır. Diğer bir deyişle aynı kod farklı yapıdaki işlemciler üzerinde çalışmaz. Hatta çoğu zaman aynı mimarinin farklı nesilleri arasında bile sorun yaşanır.
Assembly dili macro destekleyen ve desteklemeyen olarak ikiye ayrılır. Tarihi gelişim sürecinde ihtiyaç üzerine dilde macro yazmak ve yazılan bu macroları tekrar tekrar kullanmak imkanı doğmuştur. Bu tip assembly dilini makine diline çeviren çeviricilere de macroassembler adı verilir.
Assembly dilleri temel olarak fonksiyon(function) veya prosedür (procedure) desteği barındırmazlar. Hatta döngü ve koşul operatörleri de yok denilebilir. Bunun yerine programın içerisinde istenen bir satıra (adrese) gidilmesini sağlayan GOTO komudu kullanırlar.
Yapısal programlama (structured programming) dokusuna ters olan bu yaklaşım dilin performans kaygısı ve düşük seviye olmasından kaynaklanmaktadır.
Yukarıdaki şekilde assembly kaynak kodunda verilen bir girişin assembler’dan geçerek bağlayıcı (linker) marifetiyle çalışabilir (Exe code) haline gelişi tasvir edilmiştir.
Ayrıca çeviriciler (assemblers) geçiş (pass) sayısına göre gruplanabilir: