Assembly Nedir?
Assembly programlama dili düşük seviyeli bir dil olup C, C++, Pascal, C# gibi yüksek seviyeli programlama dillerine göre anlaşılması biraz daha zordur. Assembly dili ile program yazarken kullanılan bilgisayarın donanım özellikleri coder için önemlidir. Yazılan kodlar çoğunlukla donanıma bağlı yazılır ki bu da programın taşınabilirliğini azaltan bir faktördür.
Assembly dili ile program yazarken programcı doğrudan bilgisayarın işlemcisi ve hafızası ile uğraşır. Yani hafızadaki ( RAM’deki ) ve işlemci gözlerindeki değerleri doğrudan değiştirme olanağı vardır.
Yüksek seviyeli dillerdeki derleyicilerden farklı olarak, assembly kaynak dosyalarını çalışabilir dosya haline getirebilmek için “assembler” ve “linker” adı verilen programlar kullanılır. Aslında derleyicileri de bir tür assembler program olarak varsayabiliriz. Fakat derleyiciler, ekstra bir parametre kullanılmadığı takdirde, kaynak dosyasını önce gerekli Object dosyasına çeviriler daha sonra, bir hata ile karşılaşılmaz ise, elde edilen object dosyası linker yardımı ile çalışabilir dosya haline getirilir.
Bilgisayarımızda çalıştırılan tüm programlar önce bilgisayarımızın RAM’ine yüklenir. Daha sonra RAM üzerinde çalıştırma işlemi gerçekleştirilir. RAM’e yüklenen bilgi programımızın makine dili karşılığından başka bir şey değildir. Yani 0 ve 1 kümeleridir. Makine dilinin kullanıcı tarafından anlaşılabilir şekline “assembly dili” diyebiliriz.
Burada ayrı bir parantez açmak gerekli. Çünkü assembly ile makina dili arasındaki farkın iyi anlaşılması gerekir. Pek çok kişi makina dili ile assembly dilini esdeğer kabul eder. Makine dili temelde assembly ile oldukça benzerlik gösterir, ancak aynı şeyler değildir. Makine dili, tamamen 16′lık (hexadecimal) sistemde oluşturulmuş komut serilerinden oluşmaktadır. Oysa assembly bu komut serilerini bire bir karşılık gelen kelimelerden ve kelimelerin kısaltmalarından oluşmuştur.
Örnek: Makine dili ile B8 01 00 şeklinde belirtilen bir komut serisi assembly dilinde MOV AX,0001 komutuna karşılık gelir.
Assembly programlarının en önemli özellikleri boyutlarının yüksek seviyeli bir dil ile yazılan programlara nazaran çok küçük olması ve buna bağlı olarak çok daha hızlı çalışmalarıdır.
Programların hızlı çalışmaların kodlarının sadeliğinden kaynaklanmaktadır. Fakat günümüzde kullanılan i7, Phenom gibi işlemciler ve yüksek kapasitelere sahip sabit diskler assembly programlarının bu hızını önemsiz saymaktadır. Aşağıdaki örnekte ekrana “Yakup” yazan bir program önce assembly dili ile daha sonra C++ ve Pascal dilleri ile yazılmıştır.
Programların yaptıkları işlerin aynı olmasına rağmen boyutları arasındaki büyük farkı aşağıdaki tabloda görebilirsiniz.
Tabloyu yorumlamak aslında çok da zor değil;
Gördüğü gibi C++ ile yazılan programın boyutu assembly ile yazılandan 1000 kat daha fazla. Pascal ile yazılan programın boyu ile assembly ile yazılanınkinin boyunu karşılaştırmaya bile gerek duymuyorum. Zaten tablo herşeyi anlatıyor
Bu fark aslında 90 ‘lardan kalma eski bir bilgisayarda derleme yaparken çok sıkıntı çıkarabilir fakat günümüz konfigürasyonundaki bir bilgisayar için pek önemli değildir. Bu sebepten assembly programlama dili günümüzde daha çok sistem programcıları tarafından ve kodların olduğu gibi diğer programlama dilleri içerisinde kullanılmaktadır. Bu, bize sabit diskin herhangi bir bölümüne, BIOS gibi sistem kaynaklarına veya belirli bellek bölgelerine; yani bilgisayardaki donanımsal işlevlere erişme olanağı sağlar.





01. Eyl, 2010 








Henüz yorum yapılmamış... İlk yazan siz olabilirsiniz!