Assembly Dili ve Makine Dili Arasındaki Fark
Bu yazıda, Assembly dili ve makine dili hakkında ayrıntılı olarak tartışacağız. Makine dili, ikili forma sahip bir dildir. Doğrudan bir bilgisayar tarafından yürütülebilir. Montaj dili, makine koduna dönüştürmek için montajcı adı verilen yazılım gerektiren düşük seviyeli bir programlama dilidir.
Programlama dili, bir bilgisayarın belirli bir görevi yerine getirmesini veya bir algoritma oluşturmasını anlamasını sağlamak için bir dizi talimattır. Günümüzde C, C++, COBOL, Java, Python, Fortran, Ada ve Pascal gibi çok çeşitli programlama dilleri mevcuttur.
Tüm programlama dilleri, sözdizimi olarak bilinen bazı ilkel yapı taşlarına sahiptir. Bu dil sözdizimleri metinseldir. İlkeller, yeni programlar oluşturmak için programcılar tarafından birleştirilir.
Programlama dili genel olarak 3 kategoriye ayrılır:
- Üst düzey programlama dili
- Montaj dili
- Makine dili
Yüksek seviyeli bir dil, programcıların anlaması kadar yazması da kolaydır. Buradaki programcılar, belirli bir görevi yerine getirmek için basit ve kolay sözdizimi kullanır. Örnekler: Python, C, C++, vb. Bu sözdizimleri CPU tarafından anlaşılamaz; bu nedenle dahili olarak, CPU’nun derleyici ve yorumlayıcı ortamı tarafından anlayabileceği ikiliye dönüştürülür.
Assembly dili, üst düzey bir programlama dili ile Makine dili arasında yer alır. İngilizce’ye benzer sözdizimleri vardır, ancak üst düzey programlama dillerinden daha zordur. Assembly dilinde programlama yapabilmek için bilgisayar mimarisi, yazmaçlar vb. donanım düzeyinde anlaşılmış olmalıdır. Bu tür programlama daha çok gömülü sistemlerde görülür.
Aşağıda bir örnek verilmiştir,
R1, R2 EKLE
Makine dili, bilgisayarlar tarafından kolayca anlaşılan ikili dildir. Bu nedenle, kesinlikle derleyici ve yorumlayıcıya ihtiyaç duymadan doğrudan CPU tarafından yürütülebilir.
Yukarıda gösterilen şekil makine dilini temsil eder, montaj dili ve üst düzey dil açık formdur.
Örneğin: 001010001110
12 bitlik bir makine dili talimatını temsil eder. Bu talimat iki bölüme ayrılmıştır: Bir işlem kodu (veya işlem kodu) ve bir işlenen.
İşlem kodu 001, İşlenen 010001110’dur.
Programcı, işlemler için düzinelerce kod numarasını hatırlamanın yanı sıra, tüm veri öğelerinin adreslerini de takip etmelidir. Bu nedenle, Makine dili zorlu ve hataya açık olarak kabul edilir.
Assembly Dili ve Makine Dili Arasında Bire Bir Karşılaştırma (Infographics)
Assembly Dili ile Makine Dili arasındaki ilk 7 fark aşağıdadır.
Assembly Dili ile Makine Dili arasındaki temel farklar
Assembly Dili ile Makine Dili arasındaki bazı önemli farkları tartışalım:
- Makine dili, bir bilgisayar tarafından doğrudan yürütülen bir dizi bit desenidir (yani ikili biçimdir), oysa Assembly dili, bu dili makine diline dönüştüren derleyici ve yorumlayıcıya ihtiyaç duyan düşük seviyeli bir dildir. Ve sonra bir bilgisayar tarafından anlaşılabilir.
- Makine dili platforma bağımlıyken Assembly platformdan bağımsızdır. Buradaki platformlar, Windows, Linux vb. gibi bir işletim sistemine atıfta bulunur.
- Makine dili insan tarafından okunamaz; ancak, elle sayılarla yorumlayabilirsiniz. “Op-code” olarak bilinen her komut, bellekte “işlenenler” tarafından takip edilebilecek bir sayıdır.
Assembly dili, insan tarafından okunabilen ve aynı zamanda anlaşılabilen bir dizi talimattır. Burada işlem kodlarını hatırlamak yerine “anımsatıcılar” kullanılır. Bununla birlikte, yüksek seviyeli dilden daha az okunabilir.
- Makine dili son derece zaman alıcı, sıkıcı ve hataya açık olabilir. Ancak, burada anımsatıcı adlar ve simgeler bulunduğundan Assembly dilinde durum böyle değildir. İkili makine kodundan çok daha az sıkıcı ve hataya açıktır.
Her iki dilde de sorun, bir CPU mimarisi için yazılmış programın başka bir CPU mimarisi için çalışmamasıdır. Her yeni CPU mimarisinin yeni bir talimat seti olacaktır ve bu nedenle aynı programı diğer CPU için çalıştırmak için, makine dili ise sıfırdan bir program yazmak zorunda kalacaktır. Assembly dili ise, belleğe erişim talimatı değişecektir, bu nedenle önemli değişiklikler bir gereklilik olacaktır.
Assembly Dili ve Makine Dili Karşılaştırma Tablosu
Assembly Dili ile Makine Dili arasındaki en üstteki Karşılaştırmaya bakalım.
|Montaj Dili||Makine dili|
|Assembly dili, üst düzey bir programlama dili ile Makine dili arasında bir ara programlama dilidir.||Makine dili düşük seviyeli bir dildir.|
|Assembly dili, CPU tarafından yorumlayıcı ve derleyiciler tarafından düşük seviyeli dile çevrildikten sonra anlaşılan İngilizce sözdizimleridir.||Makine dili 0’lar ve 1’ler (ikili format) biçimindedir. Biri doğru/açık durumunu gösterirken, sıfır yanlış/kapalı durumunu gösterir.|
|Programcılar montaj dilini anlayabilir, ancak CPU anlayamaz.||CPU, Makine dilini doğrudan anlayabilir. Derleyici veya montajcıya gerek yok.|
|Assembly dili, platformdan bağımsız olarak aynı olan bir dizi talimattır.||Makine kodu platformdan platforma farklılık gösterir.|
|Assembly dilinin kodları ve talimatları hafızaya alınabilir.||Buradaki ikili kodlar hafızaya alınamaz.|
|Modifikasyon burada o kadar zor değil.||Modifikasyon mümkün değildir. Belirli bir CPU türü için sıfırdan yazılmalıdır.|
|Buradaki uygulamalar aygıt sürücüleri, düşük seviyeli gömülü sistemler ve gerçek zamanlı sistemlerdir.||CD’ler, DVD’ler ve Blu-ray Diskler, ikili formun bir uygulamasını temsil eder.|
Çözüm
Özetlemek gerekirse, Assembly dilinin ikili dilden bir seviye yukarı olduğunu söyleyebiliriz. Aradaki fark, doğrudan CPU tarafından yürütülen makine dilidir, oysa makine dili önce derleyici tarafından ikiliye dönüştürülür ve ardından CPU tarafından yürütülür. Bu çağda, yüksek seviyeli dil, kod kolaylığı ve anlaşılması kolay olduğu için programcılar tarafından yaygın olarak kullanılmaktadır.