Bu durumda Racih'in derle'sine uygulanabilir:
Gerçi "regular expression" kullanarak pekala bunu D içinde de yapabilir ve Sezar'ın hakkını Sezar'a vermiş oluruz...:)
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]
January 29, 2013 C dilindeki gibi define | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ali Çehreli (acehreli) | Bu durumda Racih'in derle'sine uygulanabilir: Gerçi "regular expression" kullanarak pekala bunu D içinde de yapabilir ve Sezar'ın hakkını Sezar'a vermiş oluruz...:) -- |
January 29, 2013 C dilindeki gibi define | ||||
---|---|---|---|---|
| ||||
Posted in reply to Salih Dinçer | Evet, şablon ve mixin kullanılabilir ama galiba asm blokları içinde 'opcode'dan başka bir şeye izin verilmiyor. (?) Soruyu genel olarak şöyle yanıtlayabiliriz: C'nin makroları bütünüyle önişlemci olanağıdır. Kod derlenmeye başlanmadan önce önişlemci bütün makroların yerine metin karşılıklarını yerleştirir. O açıdan bakınca önişlemcisi olmadığı için #define'ın D'de tam karşılığı yok ama kullanım amaçlarına bakınca hemen hemen hepsi var. Ali -- |
January 30, 2013 C dilindeki gibi define | ||||
---|---|---|---|---|
| ||||
Posted in reply to Salih Dinçer | Ali hocam bu cpp programını gcc kullanmadan kullanabilme imkanımız var mı? Racih'in projesini inceledim gayet hoş güzel. Dediğiniz gibi uygulanabilir ama kafama takılan bir soru oldu. Derleme esnasındaki oluşacak hataları görme konusunda sıkıntı çıkartmasın? Zekeriya -- |
January 29, 2013 C dilindeki gibi define | ||||
---|---|---|---|---|
| ||||
Posted in reply to Talha Zekeriya Durmuş (zekeriyadurmus) | Tabii bu iş için gcc ile gelen önişlemciyi de kullanabiliriz. Onun adı cpp (C++ ile karışmasın; ilgisi yok! :)). Utana sıkıla :) şöyle bir kod yazın. İsmi bu denemede 'preprocess.d' olsun:
Sonra onu cpp'den (ve onun eklediği '#' satırlarından kurtulmak için sed'den) geçirin ve sonucu 'preprocess.out.d' dosyasına yazın: '$ cpp preprocess.d | sed '/^#/d' > preprocess.out.d' Sonuçta elde edilen 'preprocess.out.d' dosyası dmd'ye derlemesi için vereceğimiz kaynak dosya olacak:
Ali -- |
January 30, 2013 C dilindeki gibi define | ||||
---|---|---|---|---|
| ||||
Posted in reply to Talha Zekeriya Durmuş (zekeriyadurmus) | cpp'yi gerektirmeyen bir çözüm bulmalı... D.learn haber grubunda sordum. Bakalım başkaları ne yapıyor. Ali -- |
January 30, 2013 C dilindeki gibi define | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ali Çehreli (acehreli) | Bir çözüm varmış:
Tabii sen makro açılımı istediğin için aşağıdaki expandNexts gibi bir işlev gerekiyor. Amaç, dizgi içindeki "Next;"leri istediğin kodla değiştirmek. Aşağıdaki ctRegex kullanan çözüm ne yazık ki derleme zamanında çalışmıyor. Onun için senin yazman gerek. Onu yaptıktan sonra aşağıdaki writeln yerine mixin yazarsan çalışacaktır:
Bu haliyle çıktıya şunu yazdırıyor: Ali -- |
February 02, 2013 C dilindeki gibi define | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ali Çehreli (acehreli) | Hocam bu kodun amacı nedir ? -- |
February 02, 2013 C dilindeki gibi define | ||||
---|---|---|---|---|
| ||||
Posted in reply to huseyin | Ali hocam cevabınızı şimdi gördüm kusura bakmayın :( Bununla ilgili şöyle bir sıkıntı çıkar bence regex işlemi yaptığı için txt içindeki bütün Next; leri değiştirir. Eğer kodlar arasında yorum satırı olarak veya string olarak Next; yazarsa o zaman sıkıntı çıkartır. Veya komutNext; gibi bir kullanım olduğunda aynı şekilde sıkıntı çıkartır. Daha iyi bir çözümü olabilir bence Zekeriya -- |
February 02, 2013 C dilindeki gibi define | ||||
---|---|---|---|---|
| ||||
Posted in reply to huseyin | Alıntı: >Hocam bu kodun amacı nedir ? Bana sormamış olsanız da cevaplayayım. Aynı kodları en az 50 kere farklı yerlerde kullanmayı istiyoruz. Bunu fonksiyon çağırarak yapabiliriz ama bu bize hız kaybettirir. Bu projede en önemli şey hız olduğu için bunu başka bir yolla yapmaya çalışıyoruz. Bu yazılan kodlar oldukça uzun kodlar olacak isteğimiz bu uzun kodlar yerine sadece Next; yazarak derleme öncesinde Next; görülen yere o uzun kodları yerleştirilmesini sağlamak. expandNexts fonksiyonu burada RegEx ile bu işlevi yapıyor. Zekeriya -- |
March 01, 2013 C dilindeki gibi define | ||||
---|---|---|---|---|
| ||||
Posted in reply to Talha Zekeriya Durmuş (zekeriyadurmus) | 1 ay önceki konuyu hortlatmış gibi olsam da hız konusunda ve Talha'nın Rhodeus Script (RhS)'i ile alakalı küçük bir endişemi paylaşmak istiyorum... Bilmiyorum diğer yorumlamalı diller böyle mi: Biz bir takım temel işleç çarklarının (operand) assemby karşılıklarını koda yerleştiriyoruz. Sonra bunların adreslerini okuyup akıllı bir düzen içerisinde istediğimiz zaman çağrılıp iş görecek halde kullanıyoruz. Tıpkı yazılım ürettiğimiz sırada işlevleri ve değişkenleri belli yapılara (class, struct, union vb.) bölmemiz ve bunları istediğimiz zaman kurup kullanmamız gibi. Peki call ve ret komutları ile dolu bir yorumlayıcı (öyle ya her işleç çarkı arasında gidip gelecek) ne kadar hızlı olabilir? Yani derlemeli bir dilde tüm komutlar akıllı bir şekilde ardı ardına yerleştirilirken biz RhS'de, belki de belleğin farklı bölümlerinde olan komutlara veriyi taşıp işlemelerini isteyeceğiz ve geri dönüp sırada hangi komutun olduğunu öğrendikten sonra bir sonrakine geçeceğiz... Bunlar bana biraz, sağ elimiz ile kafamızın diğer tarafındaki sol kulağımızı tutmak kadar zor geliyor. Haksız mıyım? -- |