Makine Dili (Makine Kodu)


   Acaba kullandığımız programları atomlarına ayıtmak isteseydik karşımıza ne çıkardı? Şimdi yazılımlarımızın yapıtaşına inelim ve direk olarak işlemcinin ne işlediğini öğrenelim.



   Makine kodu (yada makine dili) bilgisayarın işlemcisine ne yapacağını direk olarak söyleyen okunabilirliği düşük ve olabilecek en alt seviye programlama dilidir. (Kodun işlemciye direk geçmesi ve okunabilirliğinin azalması onu daha alt seviye yapar, okunabilirliği yüksekse üst seviye programlama dilidir) Makine kodunda arada hiçbir çevirme yoktur. Yani direk olarak CPU ile iletişim kurarsınız.

   Bilgisayar işlemcisinin anladığı tek dil makine dilidir. Bu yüzden hangi dili kullanırsak kullanalım (assembly, C++, C# vs) hepsi bir şekilde makine diline çevirilmelidir. Aradaki fark diğer dillerde bu işi otomatik olarak yapacak mekanizmaların olmasıdır ve genelde işin en alt seviyesiyle ilgilenmeniz gerekmez. Makine dilinde böyle bir şey yoktur. Hiç bir çeviri yapılmadan direk işlenir. Bu da onun mümkün olan en yüksek hızla çalışmasını ve çok az yer kaplamasını sağlar.

   Her ne kadar en yüksek hızlı dil olsa da bu dille yazılım geliştirmek en zorudur. İmkansız seviyesine yakın bir zorluktadır. Bu sebeple onu kullanan insanda sayılıdır. Geçmiş zamanlarda insanlar daha üst seviye programlama dilleri gelişmediği için bu dili kullanarak yazılım geliştiriyordu. Neyse ki bugün çok daha kolay ve anlaşılır bir şekilde program geliştirilebiliyor.

   Makine seviyesinde program geliştirmek çok zordur ve uzun sürer. Ayrıca hata dahi yapıyor olsanız kod yinede işleneceğinden diğer dillerin sahip olduğu hata ayıklama ve engelleme işlevlerine sahip değildir.

Örnek bir makine dili kodu 


000000 00001 00010 00110 00000 100000

  Bir şey anlaşılmasa da yukarıdaki bir makine kodudur. Direk olarak bellekte teker teker sayılarla oynadığınız için kısa bir kodla yapabilecekleriniz çok kısıtlıdır. Binlerce, milyonlarca satır gerekebilir. En iyisi işlemci tasarlamıyorsanız daha yüksek seviye programlama dillerini öğrenmek olacaktır :)

Yorumlar



Bu blogdaki popüler yayınlar

C# LAN üzerinde TCP Bağlantısı ile Veri Aktarımı (Konsol)

Ağ Topolojileri nelerdir? Hangi topoloji bir ağ için daha uygun?

Android Programlama: EditText Kullanarak Kullanıcıdan Girdi Almak

DHCP nedir? DHCP Sunucular Nasıl Çalışır?