Plazma sayı 5, sayfa 49

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 49

5. Register ve bellek arasında aritmetik/mantıksal bir işlem yapıp sonucu tekrar bir registera kopyalama 6. ALU'daki işlem sonucuna göre dallanma veya bir sonraki komuta devam etme.

Gerçek CPU'larda da komutların %75'i bu saydıklarımızdan birini veya birkaçını yapar ama bunların dışında bir şey yapmaz. Yani herbiri küçük ama faydalı işler yapar. En karmaşık programlar bu küçük işlerin bir araya gelmesiyle oluşur. Bu yüzden makine dili komutlarını öğrenmek kolay bir iştir. Makine dili ile program yazmak ise problemleri en küçük parçalarına kadar bölerek tasarım yapmayı öğrenene kadar size zor gelebilir.

Makine Dili Komutlarından Assembler'a geçiş

İnsanlar ilk yaptıkları bilgisayarları programlamaya çalışırken bellekteki her değeri rakam rakam hazırlarlarmış. Hatta rivayetlere göre en eski bilgisayarlardan olan ENIAC'ta bu rakamları belleğe girerken binlerce elektrik anahtarı (yani bildiğimiz ampul yakan cinsten) çat çut teknisyenlerce açılır kapanırmış. Tabii fazla geçmeden insanlar program yazarken ince ince sayılarla uğraşmasın diye makine dili komutlarını genelde 3 harfli kısaltmalarla ifade eden assembler dillerini oluşturmuşlar. Böylece mesela 24,125,34,55,98,12,90 diye program yazmaya çalışmak yerine insanlar

lda 24 (yani A registerine 24 adresindeki degeri yukle) ele (yani Carry Flag'i sifirla) adc 98 (98 adresindeki deger ile Carry Flag degerini toplayip A registerine ekle) sta 90 (sonucu 90 adresine yolla)

diye kod yazabilmeye başlamış. Daha sonra assembler'lar daha da gelişmiş ve insanlar çeşitli rakamların yerine isimler (bunlara etiketler de diyoruz) kullanabilmeye başlamış. Böylece yukarıdaki kod yerine

mevcut param - 24 maas 98 ev sahibi

90

lda ele adc sta

mevcut param

maas ev sahibi

yazabilmeye başlamışlar.

İşte günümüzde makine dili kullanarak kod yazan hemen herkes bu tip assembler araçları kullanır. Bu araçları kullanırken yazılan kod nasıl düzenli tutulur? Aradan 5 ay geçtikten sonra eski kodlarınıza döndüğünüzde onlardan bir şeyler anlayabileceğinizi nasıl garanti edersiniz? Bütün bunlar cevaplanması gereken önemli sorulardır. Bunlarla ilgili yazılım mühendisliğinde kullanılan bir ton teknik vardır. Bunlar da başka bir yazının konusu.

"Eee biz şimdi hiçbir assembler komutu öğrenmedik" diyebilirsiniz. Panik yapmayın onun da zamanı gelecek. Hali hazırda bu konuda bulabileceğiniz kaynaklar var internette. Şimdi gidin ve onlara bir daha bakın. Pek çok şeyi daha kafanızda pekiştirerek anladığınızı göreceksiniz. Ayrıca ben de er geç o konuda bir şeyler yazacağım.

Sonuç

Bu yazı aslında giriş seviyesinde bir yazı olmakla beraber içerdiği bazı elektronik detayları yüzünden orta seviye gibi gelebilir. Eğer yazının içinde anlamadığınız yerler varsa bize yazarak sorabilirsiniz. Sonuçta anlamadığınız yerler kalsa bile anladığınız yerler size bayağı fayda sağlayacaktır. Ayrıca sizinle bire bir çalışan bir hocanız olmadıkça her konuda yeni bir şeyler öğrenirken, bazı yerleri anlamayabilirsiniz. Daha sonra başka bir yerde bir şey okurken anlamadığınız şeyle alakalı olduğunu anlar ve gereken ilişkilendirmeyi kafanızda yaparsınız. Zaten öğrenme böyle bir deneyimdir.

Önümüzdeki sayıda Giriş/Çıkış sistemlerinin CPU ve bellek ile nasıl entegre edildiğini inceleyeceğiz.

Klavyeyle gezinmek için ← ve → tuşları.