Forum: Projeler Rhodeus Script RSS
0.0.3 Ön Sürüm
Avatar
zekeriyadurmus #1
Kullanıcı başlığı: Talha Zekeriya Durmuş
Üye Eki 2012 tarihinden beri · 701 mesaj · Konum: Samsun/Türkiye
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: 0.0.3 Ön Sürüm
Malum Intermediate Language yapmam bütün sistemi baştan yazmamı gerektirdi ve bir şeyler de yaptım. Şu an fonksiyonlar çalışır vaziyette sırada modüller. Şu zamana kadarki yaptıklarımı githuba atayım istedim :)

<|
    echo "wqe" + "qwe"
|>

<|
    fn x(a, b=2, *c, **d){
        print(a, b, c, d    )
    }
    x(1,2,3,4,5,6, a->1, b->2, c->3)
|>

<|
    a = [1,2,3,4,5]
    a.append(4)
    print(a)
|>

Gibi olayları şu an halletim. Sistemde en çok hoşuma giden şey ise şu oldu.

case IL_GETSUB: mbp++;
    auto y = ths.get!string(mbp);
    rhasm.push(y.ptr);
    rhasm.push(y.length);
    callF(REGISTERC.EAX, sizes.getSub);
    goto startp;
.append işlemi için vm kısmında yazdığım kod sadece bu olması beni oldukça sevindirdi önceki sistemde her olasılık için ayrı ayrı yazılıp kodlar daha karmaşık oluyordu ama tabiki de bazı yerleri oldukça zorlaştırdı.

Zekeriya
Bilgi meraktan gelir...
Avatar
Salih Dinçer #2
Üye Ock 2012 tarihinden beri · 1880 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Eline sağlık...

Gördüğüm kadarıyla farklı özellikler ekliyorsun. Bunlar ilgimi çekiyor. Aslında tüm kodları D yazar gibi de yazıp en azından %50 D uyumlu bir 'mode' olmasını da arzu ediyorum. Bunları konuşmuş ve uyarlamayı düşünüyor musun (?), bilmiyorum...

Yine özgün yanları olması güzel. Sanırım veri türlerini belirtmek gerek miyor, öyle mi? Peki şu an ki haliyle sınırlarımızı ifade edebilir misin? Yani matematiksel işlemlerde kullanılabilecek en büyük sayı, dizge ifadelerde UTF desteği vb. alt/üst sınırları merak ediyorum.

Ayrıca yazılım içinde kullandığı kısaltmaları kod içinde veya bir belgede (hatta burada ifade ederken parantez içinde) açıklaman mümkün mü? Konuya bir süredir uzak kaldığım için yakınlaşmayı kolaylaştıracak bilgilere ihtiyacım var.

Başarılar...
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
Avatar
zekeriyadurmus #3
Kullanıcı başlığı: Talha Zekeriya Durmuş
Üye Eki 2012 tarihinden beri · 701 mesaj · Konum: Samsun/Türkiye
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Gördüğüm kadarıyla farklı özellikler ekliyorsun. Bunlar ilgimi çekiyor. Aslında tüm kodları D yazar gibi de yazıp en azından %50 D uyumlu bir 'mode' olmasını da arzu ediyorum. Bunları konuşmuş ve uyarlamayı düşünüyor musun (?), bilmiyorum...
Evet ama tam olarak nasıl başlasam bilemedim bunun üzerinde düşünüyorum.

Yine özgün yanları olması güzel. Sanırım veri türlerini belirtmek gerek miyor, öyle mi? Peki şu an ki haliyle sınırlarımızı ifade edebilir misin? Yani matematiksel işlemlerde kullanılabilecek en büyük sayı, dizge ifadelerde UTF desteği vb. alt/üst sınırları merak ediyorum.
Evet veri türü belirtilemiyor :) Hocam int, float ve normal string yani wstring falan değil :) bu türler var. Yani UTF8 desteği oluyor :) Bunlar için beraber bir çalışma yapabiliriz. Önce fikirlerimizi sunarız, testlerimizi yaparız sonra bunların üzerinde tartışırız. Şu anda sizin hazırladığınız Memory sınıfını etkin bir şekilde kullanıyorum ve çokta işimi görüyor :) Tekrardan teşekkür ederim.

https://github.com/Rhodeus/Script/blob/master/source/MeMan.d

buradan son haline bakabilirsiniz. Hazır bundan bahsediyorken şunu sormak isterim :)

 
    final auto load(T)(T data) if (!isArray!T){
        auto ret = freeLocated;
        auto mem = cast(T*) malloc(data.sizeof);
        *mem = data;
        return ret;
    }
    final auto load(T)(T data) if (isArray!T && !is(ElementType!T == ubyte)){
        auto ret = freeLocated;
        static if(isArray!(ElementEncodingType!(T))){
            throw new Exception("Invalid type!");
        }else{
            auto mem = cast(ElementEncodingType!(T)*) malloc(data.length * ElementEncodingType!(T).sizeof + typeof(T.length).sizeof);
            *(cast(typeof(T.length)*)mem) = cast(typeof(T.length)) data.length;
            mem[typeof(T.length).sizeof..data.length+typeof(T.length).sizeof] = data;
        }
        return ret;
    }
    final auto load(T)(T data) if (isArray!T && is(ElementType!T == ubyte)){
        auto ret = freeLocated;
        auto mem = cast(ElementEncodingType!(T)*) malloc(data.length);
        mem[0..data.length] = data;
        return ret;
    }
Bunlarla veri yazabiliyoruz. Burada normal veri türleri için var (int, float, structs, char vs vs) ve diziler var (char[] int[]) peki int[][] olursa veya string[] olursa ne olacak? şu anki sistem onu ayırt edemiyor :)

Zekeriya
Bilgi meraktan gelir...
Avatar
Salih Dinçer #4
Üye Ock 2012 tarihinden beri · 1880 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
zekeriyadurmus on 2013-08-20, 23:53:
peki int[][] olursa veya string[] olursa ne olacak? şu anki sistem onu ayırt edemiyor :)
Denememekle birlikte sınıfa tür şablonu (T) eklediğimizde kontrolümüz yüksek olacaktır...

Düşün, string de aslında bir dizi. Hatta çok boyutlu diziler de ardı ardına gelen bir veri. Önemli olan bunun bellekte nasıl durduğu değil çıkartıp sunarken yine (T) ile verebilmek. Yani T giren veri pekala byte byte yazılabilir. Aynı işlem tersine çevrilebilir gibi geliyor bana.

Tatile çıkmadan evvel bir kaç deneme yapabilirim ama söz vermeyeyim. Hafta sonu kursum var ve sonra yüzmeye...:)
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-04-26, 12:40:11 (UTC -07:00)