Commodore sayı 11, sayfa 62

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 62

PASCAL, COBOL gibi tüm diller. Bu dillerin genel özelliği belli bir problemin çözülmesi için geliştirilmiş olmaları. Makina dili ise bu dillerin tam tersine aletin donanım yapısına hitap eder. BASIC'i iyi biliyorsunuz dedik (zaten başka türlü, makina dilini düşünmek hayal olurdu). Yalnız Commodore 64'ünüz esasında BASIC bilmiyor. Peki nasıl oluyor da, BASIC komutlarını böyle düzenli ve hızlı yürütebiliyor. Bu özellikleri sağlayan şey, işletim sisteminin bir parçası olan BASIC-INTERPRETER (yorumlayıcı)'dır. Yorumlayıcının görevi, yazı karakterlerini kullanarak verdiğiniz BASIC komutlarını yorumlayıp bunlara ait (hazır olan) makina dili altprogramları yürütmek. Şimdi bir örnek üzerinde bu olayı daha detaylı olarak kavramaya çalışalım:

Bu emri ekrana yazıp 'RETURN' tuşuna bastığınızda, yorumlayıcı bu satırı harf harf okur ve kendine ait komutları arar. Bu işlemi, okuduğu kelimeyi belleğinde belli bir bölgede bulunan komut tablosuyla karşılaştırıp yapar (GOTO, FOR, INPUT gibi). Şayet kendine ait bir komuta rastlarsa, bu komutun numarasına dikkat eder. Bu numarayı ise başka bir tablodan o komutun adresini bulmak için kullanır. Artık komutun uygulanmasına gelmiştir sıra, PRINT emrine ait altprogram çağırılır. Bu altprogram da karakterleri tek tek okur. Tırnağa rastladığı zaman sonra gelen karakterleri ekrana basmaya başlar. Bu işlem ikinci tırnağa rastlayana kadar sürer. Daha sonra ise satır bitmektedir. PRINT altprogramı yorumlayıcıya geri döner. Bu da yapacağı işin bittiğini anlayınca yeni komut almak için 'READY' yazdır ve CURSOR yanıp sönmeye başlar. Şimdi diyeceksiniz ki bu kadarcık iş için aletimiz böyle mi uğraşıyor?.. Bu kadar uğraşmaktan ciddi bir şey yapmaya zaman bulamaz bu alet... Halbuki gördüğünüz gibi durum o kadar da kötü değil. Aletimiz gene de bu işlemleri oldukça hızlı yapmakta. Düşünün bir de biz aradaki birçok gereksiz işlemi atlatıp bu işleri yapan ana işlem ünitesine doğrudan hitap edebilsek. O zaman görün siz! Bir örnekle bu hız farkını daha belirgin olarak gözleyelim. Diyelim ki ekranın sol üst köşesine bir “A” harfi çıkartmak istiyoruz. Bunun için hızlı bir yöntem olarak POKE komutunu kullanalım. BASIC satırı olarak şunu girmemiz gerekmektedir:

Bunu yazar yazmaz ekranın sol üst köşesinde “A” harfi belirdi değil mi? (Bu emri yazarken ekranı kaydıracak bir yerde olmamaya dikkat edin, yoksa A harfinizi bir türlü göremezsiniz, hâlâ göremiyorsanız sizin aletiniz 1984 senesinden de eski üretilmiş demektir. O zaman uğraşmaktan vazgeçin.) Yalnız hızı gözle takip edemediniz galiba?.. Tekrar tekrar denemenin faydası yok. Oldukça hızlı oluyor galiba bu iş. Bütün bu işlemin toplam süresi 2 milisaniye civarı bir şey (bir milisaniye, saniyenin binde biridir). Şimdi bir de makina dilinde aynı işi yaptıralım:

Bunu yazıp zamanı ölçmeye falan kesinlikle kalkışmayın. Çünkü işlemimiz yalnızca 8 mikrosaniye sürüyor (bir mikrosaniye, saniyenin milyonda biridir). Gördüğümüz gibi aynı işi BASIC'te ve makina dilinde yapmak arasında 200 kat kadar zaman farkı keşfettik. Aslında genel bir yargı olarak belirtebiliriz ki, aynı işi yapmak üzere yazılmış BASIC ve makina dili programlar arasında 10 ilâ 4000 kat hız farkı vardır. Bundan başka bazı işler vardır ki yalnızca makina dilinde yapılabilir. Bunlara daha sonra değineceğiz. Başka bir genel yargı da bilgisayarın tüm olanaklarını yalnızca makina dilinden kullanabileceğiniz. Buna örnek olarak Commodore 64'ün üç boyutlu ve gerçek zamana bağımlı grafik özelliklerini kullanabilmeyi verebiliriz. İlginç bir özellik de makina dili programlarının daha ufak ve derli toplu oluşu. Mesela 1 KByte'lik bir BASIC program ciddiye alınmaz bile. Oysa bu uzunlukta bir makina dili program başlı başına tüm bilgisayarı çekip çevirebilir. Veri ve bilgileri saklama konu-

sunda da aynı şeyi söyleyebiliriz.

Kendinize uygun en kompakt şekli kullanabilirsiniz. Oysa BASIC'te kullanabileceğiniz veri tipleri sınırlıdır. Gelelim makina dilinin dezavantajlarına: Öncelikle makina dilini öğrenmek gerekiyor. Fakat BASIC'teki programlama tekniklerine hakimseniz, belli bir hızınız var demektir. Ayrıca LİSTİNG ekinde makina dilinde çalışabilmeniz için gerekli araç ve gereçleri bulacaksınız. Bunlar monitör programları, assembler programları, simülatör'ler, reassembler vs. programları olacak. Makina dilinin başka bir dezavantajı bilgisayara aşırı biçimde bağımlı olmasıdır. Aynı ana işlem ünitesine sahip bilgisayarlarda bile doğrudan programları taşıyamazsınız. Bunun nedeni makina dili programlarının bilgisayarın birçok özel fonksiyonlarına yönelik olmasıdır. Gördüğünüz gibi dezavantajlar pek o kadar da fazla değil. Bunları da yalnızca kendine güven ve cesaretle atlatabilirsiniz. Gerçekten de bilgisayarınızda arayıp bulamadığınız birçok özelliği makina dili yardımıyla görebileceksiniz. Bu arada bazılarınız diyebilir ki BASIC ne olacak? Bir kenara mı bırakacağız o'nu?.. Hayır, hiç de öyle değil. Programınızın gerekli kısımlarında makina dili kullanırsınız, bunları denetim altında tutan gene BASIC olur.

İlk makina dili programınızı yazınca göreceksiniz ki bu iş öyle ilk göründüğü kadar zor değil. Bu yazı dizisi boyunca birçok programlama örneği de vererek size program geliştirme yönünden yardımcı olmaya çalışacağız. Dediğimiz gibi, sonuçta iyi bir şeyler yapabilecek duruma geleceksiniz. O kadar da zor olmayacak. Fakat siz gene de gayretinizi koruyun; azim ve sabırı elden bırakmayın. Herkes hazırsa, haydi başlıyoruz...

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