Makine Dili (Machine Code) Nedir?

“Makinelerin dili var mıdır? Makineler hangi dili kullanırlar? Makine dili nedir?” Ar-Ge birimi tasarım ekip liderimiz Ahmet Cemal Kurtulmuş, bu sorulara cevap arayanlar için teknoloji bloğumuza yazdı.

Keyifli okumalar…

Makinelerin Dili

01001101 01100001 01101011 01101001 01101110 01100101 01101100 01100101 01110010 01101001 01101110 00100000 01000100 01101001 01101100 011010011

İnsanlar anlaşmak için kendi aralarında ortak bir dili konuşurlar. Her toplumun kendine özgü bir dili vardır ve birbirleriyle bu dil aracılığıyla iletişime geçerler. O dil o kadar oturmuştur ki, insan kendi kendine içinden düşünürken dahi o dil ile düşünür. Bir toplumun diğer toplumlarla anlaşabilmesi içinse insanlar yeni diller öğrenirler. Öğrendikleri yeni diller, onlara diğer toplumlarla iletişim kurabilme olanağı tanır. Bu öğrenme sürecinde onlara dili öğreten veya öğrenmelerini kolaylaştıran dil öğretmenleri vardır.

Günümüzde teknolojinin gelişmesiyle birlikte ortaya bir dil daha çıkmıştır. Bu dil bizim makinelerle iletişime geçmemize olanak sağlamaktadır. Söz konusu bu dil, makine dilidir. Makinelere bizim dilimizi öğreten öğretmenler ise yazılım, elektronik veya bilgisayar mühendislerimizdir. Makine dili matematiksel bir mantık üzerine kuruludur. Biz nasıl içimizden düşünürken dahi kendi dilimizi kullanıyorsak, makineler de kendi içlerinde işlem yaparken kendi dillerini kullanırlar.

Makineleri kullanırken genellikle çok zorlanmayız. Çünkü her şey daha pratik bir insan-makine etkileşimi gözetilerek, son aşamada kolay bir kullanıcı deneyimi elde etmek için hazırlanmıştır. Örneğin bir telefon araması gerçekleştirmek istediğimizde telefonumuzun ekranında bulunan rehber ikonuna basıyoruz. Kendi kullandığımız dil ile daha önce kayıt etmiş olduğumuz kişiyi buluyor ve arama butonuna basıyoruz. Arama işlemi gerçekleştirmek için bu eylemler yeterli oluyor. Tabii ki bu işlemi bu kadar kolay yapabilmemiz, daha önce bir mühendisimizin telefona bizim dilimizi öğretmesinden kaynaklanıyor. Aslında makine, arka planda kendi dilinden, yani makine diliyle konuşuyor.

Artık makinelerin iç dünyasına doğru biraz daha girmeye başlayabiliriz. Makinelerin dilinin aslında matematiğin bir alanını oluşturduğunu daha önce de söylemiştik. Matematikte bu dal, binary (ikili) sistem olarak adlandırılmaktadır. Aslında makine dili sayılar üzerine kuruludur. Bu sayıların farklı kombinasyonları anlaşmayı farklı ifadelere denk gelerek sağlarlar.

Binary sistem, iki tabanındaki sayılardan oluşan sayı sistemidir. Betimlemek için sayı sayma işlemini örnek olarak alabiliriz. 0’dan 9’a kadar sayalım, 10 sayısı için bir rakam daha ekleyelim ve 10’u elde edelim. Bu bizim kullandığımız normal sayı sistemidir. İkili sayı sisteminin mantığı da 0 ve 1’den oluşan bir sayı sistemi olması bakımından esasında aynıdır. 0’dan sonra 1 gelir ve daha sonra başka rakam olmadığı için yanına yeni bir rakam alır. Böylelikle işlem, 10 ve 11 olarak devam eder. Yine rakamlarımızın en büyüklerini kullandığımız için, işlem bir rakam daha eklemeyle, 100, 101… biçiminde devam eder. İşte bu sisteme matematikte binary sistem denir.

Makine Dili - İnsan Makine Etkileşimi
“İnsan-makine etkileşimi süresince işlemleri kolayca yapabilmemiz, daha önce bir mühendisin telefona bizim dilimizi öğretmesinden kaynaklanıyor. Aslında makine, arka planda kendi dilinden konuşuyor.”

Binary sistem bizim sıkça duyduğumuz bir birimin oluşmasına da neden olmuştur. Bu birimin adı byte (bayt)‘dır. Binary sistemdeki rakamların her birini bit olarak isimlendiririz. 8 bit 1 byte değerini oluşturur; 1024 byte 1 kilobyte, 1024 kilobyte ise 1 megabyte eder. Binary sistemde her bir rakam hanesine iki farklı değeri koyabildiğimiz için 2 üzeri rakam hanesi sayısı kadar farklı veriyi binary sistem ile rahatça ifade edebiliriz.

Makine Dili ve ASCII Kodu

Bir örnekle bu durumu daha açık bir şekilde anlatalım. Örneğin elimizde iki bitlik bir veri olsun. Bunlar 00, 01, 10, 11 değerlerinden biri olmak zorundadır. Yani 2 bitte 4 adet veri saklamış oluyoruz. Tüm dünyada 1 byte’lık veri (8 bitlik veri), anlamlı bir standarda oturtulmuştur ve bizler iletişime geçerken bu standardı kullanırız. 8 bit = 256 olduğundan 256 farklı veriye işaret eder. Bu veriler ASCII (American Standard Code for Information Interchange) adı altında standartlaşmıştır. Aşağıda sık kullanılan bazı verilerin ASCII kodu gösterilmektedir.

ASCII Kod: Harflerin binary (ikili sistemde) karşılıkları.
“Binary sistem bizim sıkça duyduğumuz bir birimin oluşmasına da neden olmuştur ki, bu birimin adı byte (bayt)‘dır.”

İkili sistem sayesinde artık makinelerle nasıl iletişime geçtiğimizi biliyoruz. Fakat aklınıza hemen “neden böyle bir sayı sistemi ile iletişime geçmeye çalışıyoruz, kendi bildiğimiz sayıları kullansak olmaz mı” sorusu gelmiş olabilir.

Bunun cevabını da şu şekilde verebiliriz;

İkili sayı sistemi elektriksel sinyalleri tanımlamak için oldukça kolaydır. Yani 1 değeri (rakamı) için +5 voltluk bir gerilim oluştururken 0 (rakamı) değeri için 0 voltluk bir gerilim uygulamamız kâfi olacaktır diyebiliriz. Tabii ki bu voltaj seviyeleri farklılık gösterebilir. Temel mantığı zihnimizde daha iyi canlandırabilmek için mekanizmayı şu şekilde tekrar irdeleyebiliriz. Evinize girdiniz ve elektrik düğmesine bastınız. Odadaki lambanızın yanması 1’e, ışığı geri kapatmanız ise 0’a tekabül etmektedir. Işığı belli zaman aralıklarında sekiz kere açıp kapadığınızda artık 1 baytlık bir veri oluşturmuş olursunuz. İşte bu noktada da frekans diye ifade ettiğimiz bir kavram ortaya çıkar.

Şöyle ki; ışık açıkken ışığı kapadığımız an kronometreyi başlatıp bir saniye boyunca ışığı kapalı bırakalım. Daha sonra ışığı bir saniye sonunda açıp 4 saniye bekleyelim. Akabinde ışığı tekrar kapatalım ve üç saniye daha bekleyelim. 8 saniye sonunda toplamda 01111000 verisini oluşturmuş olduk. Bu da bize ASCII‘ye göre ‘z’ karakterini ifade etmektedir.

Yukarıdaki örnekte her saniyede bir işlem yaptığımız için frekansımız 1 Hertz olmuş oldu. 1 hertzin 1 milyar kat fazlası olan giga (ciga) hertz günümüzde telefonlarımızın veya bilgisayarlarımızın hızını ifade eden ve hepimizin aşina olduğu bir değerdir. Yani bilgisayarınız 3 gigahertz ise artık şunu biliyorsunuz: bilgisayarınız 1 saniye içerisinde 3 milyar kez o işlemi yapıyor! Yani basit bir tabirle; lamba anahtar ilişkisini tekrar göz önüne alırsak, bilgisayarımız bir saniyede tam 3 milyar kez ışık aç-kapa işlemi gerçekleştirebiliyor.

İkili Sayı Sistemi (Binary System) ve Makinelerin Çalışma Prensibi

Zannediyoruz ki makinelerin dilini kısmen çözdük. Yani artık makinelerle iletişim kurabiliriz. Fakat düşünmeyen insanın iletişime geçmesi ne kadar beyhude ise aynı şekilde işlem yapmayan bir makinenin iletişimine de pek ihtiyacımız olmayacaktır. Daha önce de değindiğimiz üzere, insanlar kendi içlerinde nasıl kendi dilleriyle düşünüyorsa, makineler de kendi dilleriyle işlem yaparlar. İşte bu kendi dilini kullanarak işlem yapan bilgisayarlar (makineler), muazzam bir sistem üzerinden çalışırlar. Bu binary (ikili) sistemle oluşturulmuş muhakeme ve mantık kabiliyetleri sistemi, matematikte başka bir dal olan boole (boolean) cebiri ile oluşturulmuştur.

Basit bir örnek üzerinden bu sistemi biraz açıklamaya çalışalım;

Binary sistem ile çalıştığımız için elimizde yalnızca birler ve sıfırlar var. Bu nedenle yalnızca bunlar ile muhakeme yapmak zorundayız.

Yukarıdaki lamba anahtar ilişkisine yeniden dönelim. İki adet elektrik düğmesini seri şekilde arka arkaya koyalım. Bu elektrik düğmelerinin sonuna da birer lamba bağlayalım. İlk düğmeye bastığımızda (binary olarak durum 1) lamba yanmaz. Çünkü diğer düğmeye (binary olarak durum 0’da) henüz basmadık. Bir diğer düğmeye basarken ilk bastığımız düğmeye basmazsak lamba yine yanmayacaktır çünkü hat yine açıktadır. Lambayı yakabilmemizin tek olanağı iki düğmeye aynı anda basmaktır.

Aşağıdaki tabloda bu durum daha net anlaşılabilir.

DÜĞME 1DÜĞME 2LAMBA
01 (Basılı)0
1 (Basılı)00
000
1 (Basılı)1 (Basılı)1 (Yanar)
Tablo1: Binary sistemde iki anahtar ve lamba tablosu.

Yukarıda görüldüğü gibi, küçük bir muhakeme yürütmüş olduk. Eğer işlemi gerçekleştirmek istiyorsak, birinci düğmeden de ikinci düğmeden de sinyal gelmiş olması gerekmektedir.

Bu temel matematik mantığı ve sayı sistemi çok büyük ve kompleks sistemlerin oluşum noktasıdır. Bu yapılar mikroişlemci, ram, mikro denetleyici gibi sistemleri oluşturmaktadır. Bugün aklınıza gelebilecek olan hemen hemen her makine bu sistemle hayat bulmakta ve akıl kazanmaktadır. Uçaklar, çamaşır-bulaşık makineleri, motor sürücüleri, televizyonlar, telefonlar, arabalar… Daha milyonlarca farklı makine bu şekilde çalışmaktadır.

Böylesine kompleks sistemlerin temeli olan ikili sayı sistemlerini matematiğin ilk evrelerinde görmekteyiz. Birçoğumuzun aşina olduğu The Matrix (1999) filminde siyah fonda akan yeşil sayıları hatırlayalım. Bu sayılar filmin temasına çok uygun bir şekilde seçilmiş ve tam da yazımızda bahsettiğimiz işlemlere vurgu yapmak için hazırlanmıştır.

11000100 10110000 01111001 01101001 00100000 01100111 11000011 10111100 01101110 01101100 01100101 01110010

Yazımızı bitirirken kullandığımız bu kodu Binary-Text çeviri aracı ile çevirebilirsiniz. Böylelikle yazımızı hangi cümle ile bitirdiğimizi öğrenebilirsiniz. Üstelik aynı araç ile kendi yazdığınız metnin binary sistemdeki karşılığını da üretebilirsiniz.

Ahmet Cemal Kurtulmuş

  1. Bu binary kod, makine dilinde “Makinelerin Dili” tamlamasının karşılığıdır. ↩︎
Scroll to Top

Elekon Akıllı Yapı Teknolojileri sitesinden daha fazla şey keşfedin

Okumaya devam etmek ve tüm arşive erişim kazanmak için hemen abone olun.

Okumaya Devam Edin