HaPG – Deneysel Parser Generator – ASM Syntax

Daha yazının girişindeki not: Şu işe giriştim girişeli isimlendirme tekniklerim üzerine şöyle bir baktığımda kendimde fena bir megalomani sezmedim değil açıkçası :):

gibi…

Neyse… Mevzudan kısaca söz edersem, evet deneysel bir Parser Generator üzerinde çalışmaktayım, ufaktan ufaktan. Bu çalışma süresince bilinen Grammer, Parser, Compiler vb çalışmaları (CFG, LL(k) gibi) katlettiğimin farkındayım. Amaç biraz da bu aslında. Ortaya yeni neler çıkabiliyor, bunları görebilmek.

İlk adım olarak ortaya bir grammer çıkartmam gerektiğini ve Parser Generator projesine tam manasıyla daldığımda her bir adımı kontrol altında tutabilmeyi düşünerek kendisiyle sıkı fıkı olmaktan memnuniyet duyduğum, sevgili assembly dilinin Intel syntax’ını sağlayacak bir kurallar dizisi ortaya çıkartmaya çalıştım. Aşağıda bu kurallar dizisini ve sıktığım meta karakterler açıklamalarını bulacaksınız. Mevcuta döktüğüm kurallar tam bir assembler desteği sunmamakta. İlerleyen zamanlarda, vakit buldukça eksik kalan ve şimdiye kadar kullandığım assemblerlarda eksikliğini hissettiğim, “keşke şöyle bir şey de olsaydı” dediğim özelliklerin kurallarını da ekleyeceğim.

Kurallara ve ek özelliklere yönelik önerileriniz, tavsiyeleriniz göz ardı edilmeyecektir :) Sağlıcakla kalın… Continue reading

Motorola 680x Emülatörü

Mikroişlemciler ve Mikroişlemciler Laboratuarı derslerini aldığım senelerde, saygıdeğer Prof. Dr. Rıfat YAZICI hocamın (kendisi uzun yıllar sonra Karadeniz Teknik Üniversitesi’nden emekli olmuştur, şu an İstanbul Ticaret Üniversitesi’nde görev almaktadır) referans aldığı mikroişlemci Motorola’nın 6802 modeliydi. Gerek Mikroişlemciler dersi olsun gerek laboratuar olsun, bu işlemciyi kullanarak yazdığımız programları test etmek pek mümkün değildi. Programları ezbere yazıyor, kağıt üzerinde adım adım işleyişi takip ediyoduk. Laboratuarda durum birazcık farklıydı, ama, nihayetinde günümüz debuggerlarında çalışabildiğimiz gibi çalışamıyorduk, hem program üzerinde hem deney seti üzerinde. İnternette bir miktar araştırdıktan sonra bu 6800 işlemcisi için bir emülatör buldum. Program konsol üzerinde çalışıyordu ve parametrik yapısı gereği kullanması biraz zordu. Kullanmalarını tavsiye ettiğim arkadaşlardan da olumlu geri dönüşler alamıyordum, çünkü emülatörün işleyişi, kullanımı pek de anlaşılır şekilde açık değildi. Ben, her iki dersi de bir takılma takılma yaşamadan geçtim fakat kafamda soru işareti oluşmasını engelleyemedim :) Arkamızdan gelecek olan her arkadaşımız bu sıkıntıları yaşayacak ve doğru düzgün kullanabileceği bir program bulamayacaktı. Ve beklenen florasan yandı: Hasan; bu emülatörü VCL ortamında sen neden yazmıyorsun?
Continue reading

TThreadPool Günlükleri – Vol I : TParallelizableProperties

Son iki yazımda bahsettiğim üzere bir süredir YSA konusu üzerinde bazı çalışmalar yapıyorum. Hatta dün yayınladığım yazıda, üzerinde çalıştığım ağ ile ilgili bazı kısımların paralelleştirilebileceği hakkında birkaç kelam etmiştim. Bugün bu paralelleştirme çalışmaları üzerine mantığını oturtmaya ve işleyişini geliştirmeye yavaş yavaş başladım. İşte ilk meyveler:

Continue reading

İleri Beslemeli Yapay Sinir Ağları ve Geri Yayılım Algoritması – TNeuron , TLayer , TNeuralNetwork

Bir önceki yazıda İleri Beslemeli Yapay Sinir Ağları ve Geri Yayılım Algoritması konusundan bahsetmiştim. Şimdi ise bu sinir ağının kodlarını yayınlayalım. Elimden geldiğince açık ve anlaşılır bir şekilde kodlama yapmaya çalıştım. Gerek işleyiş, gerek isimlendirmeler olsun anlaşılmayan ya da kafanıza takılan herhangi bir soru işareti hakkında benimle rahatlıkla iletişime geçebilirsiniz…

Here we go!!

Continue reading

HaSQL notları – TDateTime Veri Tipine Alternatif

Başlıktan anlaşılacağı üzere TDateTime veri tipine alternatif bir tarih/zaman tipi üzerinde çalışacağız… Neden böyle bir gereksinime ihtiyaç duydun derseniz? TDateTime veri tipi, UnixTime implementasyonu kullanarak tarih ve zaman hesaplamaları yapar. Bu konudaki detayları, Delphi için System.pas ( … TDateTime = type Double; … ), C++ için ( gene System.pas :D ) ve Wikipedia – Unix Time referanslarından inceleyebilirsiniz… Continue reading

Bir Linked List Hikayesi – Scene II – The List Itself – I ListItem

Bağlı liste macerama kaldığım yerden devam ediyorum…

Veri yapıları dersimizin ilk saatleri. Vasıf Hocam ilk iki konuyu anlatmış, Kuyruk yapısını bitirmiş, ara konular üzerine sohbet ediyorduk sınıfça. Bilmeyenleriniz için, Vasıf Hocamızın ara konuları Biyometrik Tanıma ile ilgilidir hep :). Sorduğu bir soru vardı “Şunu nasıl gerçeklersiniz?” şeklinde. Ben de el kaldırıp “Dinamik dizi tanımlarım. Her yeni değer ulaştığında bu diziyi güncellerim” demiştim. Dinamik dizi hayranıyız ya o zamanlar ( 1. sınıfta, programlama sınavlarında soruları dinamik dizilerle çözüyordum hep :) Hatta 2. sınıfta Programlama II sınavlarında bile daha dinamik organizasyon anlatılmadan ben dinamik dizilerle çözüyodum gene :) )… Tutturmuşum bir dinamik dizi dinamik dizi gidiyorum… Hocanın ilk tepkisi: ( bıyık altı, dudak kenarı gülümseyerek ) “Ohoo ne yaptın oğlum?!! İşlem yükünün çoğu senin dizi organizasyonunda harcandı!!”. Akabinde açıklamasını yaptı, “bu değerleri bir listede tutarım” şeklinde… Ve hemen ardından da “Başlık atın arkadaşlar: ‘Liste Veri Yapısı’ “…

Continue reading

Bir Linked List Hikayesi – Scene I – Asal Sayılar

Her şey asal sayıları hesaplayan ( hesaplamaya çalışan :) ) algoritma üzerinde çalışmamla başladı… Sanırım üniversiteye yeni girmiştim, 5 sene kadar öncesi işte. Asal sayıların hesaplanması için çok efektif algoritmalar olmasına rağmen ben bile bile hamal bir algoritma tasarlamak peşine düştüm. Benim tasarımım olacaktı nihayetinde :). Yaklaşımım şuydu: temel asallık kuralı… Bir sayı kendisinden ve 1 den başka bir sayıya tam bölünemeyecek… Bunu nasıl gerçekleyebilirdim peki? Sayıyı, kendisine kadar sayılara böldürerek elbet :)

Continue reading