- Katılım
- 24 Şubat 2018
- Mesajlar
- 24,752
Aslında en başta şunu açıkça ortaya koymak lazım: Bilgisayarların içinde bulunan işlemcinin (CPU) anladığı tek programlama dili, makina dilidir. İşlemci, bilgisayar hafızasında bulunan makina dili komutunu okur, gereğini yapar, sonraki komutu okur, onun gereğini yapar ve bu süreç, bilgisayar açık olduğu sürece devam eder. Ama biz insanlar, bilgisayar programı yazarken makina dili ile yazmayız, çünkü makina dili ile program yazmak SON DERECE ZORDUR ve çok basit bir programı yazmak için sarfedilmesi gereken süre, kabul edilemeyecek kadar uzundur.
Hayali bir "RoadRunner" işlemcisi için hayali bir makina kodu programına bakalım. Burada, en soldaki sütun, bilgisayar hafızasındaki adresi göstermektedir (heksadesimal olarak), soltaki sütün ise, o adreste bulunan veriyi göstermektedir (gene hex olarak):
Burada sağ sütundaki her sayı, ya bir komut, yada bir komut ile ilgili parametre olabilir. Komutlara ve olası parametrelerine karşılık gelen sayılar da, ilgili işlemcinin dokümanlarında anlatılmaktadır.
Her işlemci ailesinin komut yapısı, komutlara karşılık gelen rakamlar diğerinden tamamen farklıdır. Örneğin ARM için hazırlanmış bir makina dili programı, MIPS işlemcisinde doğru çalışmaz, çünkü örneğin 3A komutunun ARM'daki anlamı, MIPS'teki anlamı ile hiçbir alakası yoktur. Yani makina dilinde program yazma işine girsek, çalışacağımız her işlemci ailesi için tamamen farklı komut setleriyle çalışmamız gerekecek. Bir işlemcinin sağladığı komut, başka işlemcide olmayabilir, bu durumda alternatif bir programcık kullanmamız gerekecek veya o işi belki de hiç yapamayacağız.
Hayali bir "RoadRunner" işlemcisi için hayali bir makina kodu programına bakalım. Burada, en soldaki sütun, bilgisayar hafızasındaki adresi göstermektedir (heksadesimal olarak), soltaki sütün ise, o adreste bulunan veriyi göstermektedir (gene hex olarak):
Kod:
Adres Data
7F8C: 3A
7F8D: 47
7F8E: 1F
7F8F: 00
7F90: 0C
7F91: 00
7F92: 12
7F93: F3
7F94: AB
7F95: 6C
Burada sağ sütundaki her sayı, ya bir komut, yada bir komut ile ilgili parametre olabilir. Komutlara ve olası parametrelerine karşılık gelen sayılar da, ilgili işlemcinin dokümanlarında anlatılmaktadır.
Her işlemci ailesinin komut yapısı, komutlara karşılık gelen rakamlar diğerinden tamamen farklıdır. Örneğin ARM için hazırlanmış bir makina dili programı, MIPS işlemcisinde doğru çalışmaz, çünkü örneğin 3A komutunun ARM'daki anlamı, MIPS'teki anlamı ile hiçbir alakası yoktur. Yani makina dilinde program yazma işine girsek, çalışacağımız her işlemci ailesi için tamamen farklı komut setleriyle çalışmamız gerekecek. Bir işlemcinin sağladığı komut, başka işlemcide olmayabilir, bu durumda alternatif bir programcık kullanmamız gerekecek veya o işi belki de hiç yapamayacağız.