Forum: Projeler Rhodeus Script RSS
Yeniden yapılandırma
Sayfa:  1  2  sonraki 
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ı: Yeniden yapılandırma
Biraz komik gelecek veya dalga geçeceksiniz belki de :P ama Rhodeus Script'i yeniden yapılandırmaya başladım. Bu sefer gerçekten :) Rhodeus Script rakiplerine göre hızlanacak :D Bazı şeyler zamanla öğreniliyor haliyle sonradan da böyle tamamen farklı bir yeni sürümle uğraşıyorsunuz :)

Ne zamana kadar biter hiç bir fikrim yok ama kayda değer bir ilerleme olunca haber veririm :)

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

Aşamaları madde madde paylaşırsan seviniriz. Belki olumlu yönde katkılarımız olur. Ne kadar basit veya karmaşık olduğu önemli değil. Sadece maddelere dökmek ve belki üzerinde biraz tartışmak yeni maddeleri açabilir veya eskilerini olgunlaştırabilir...

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ı
Herşeyi aşama aşamaya yapmaya çalışıyorum birden herşeyi yapmamaya çalışıyorum çünkü ne kadar çok şeyi aynı anda yapmaya kalkarsam sistem hataları o kadar çoğalacak bu da beni yolumdan çıkaracak bu yüzden aşağıdaki resimde bir integeri çağırınca değerini yazıyor tuhaf gelmesin yani :)

Dilde toplama işlemlerini yaptım hız testi yapmadım henüz. Fonksiyon olaylarını da ekleyince yapmayı planlıyorum ama hızlanma olduğundan kesinlikle eminim çünkü önceki sistem struct içerisindeki bir işleve erişiyordum ve asm kodlarını biraz inceledim ve gereksiz çok fazla kontrol var buda oldukça yavaşlatıyordu sistemi

RhData türünü hatırlarsınız, hatırlamıyorsanız sorun yok ama hatırlıyorsanız artık unutun :) Bu RhData türü de gereksiz yavaşlatıyordu diye düşünüyorum. Artık onun yerine sadece malloc dan dönen pointer adresi var yani RhInt aşağıdaki gibi oldu artık :)

struct _int{
    int typ;
    int value;
}
void* RhInt(int z){
    _int* yer = cast(_int*) GC.calloc(_int.sizeof);
    *yer = _int(M_INT, z);
    return yer;
}

REGISTER yönetimi ile ilgili sorunlar yaşayacağımı düşünüyorum sonuçta çok sınırlı sayıda REGISTER var ve bazı işlemlerde pop push ile register ları stack a atmamı gerektiriyor maalesef.

Ayrıca ileriki aşamalarda Sistem Durum Kontrolörü yapmam hız açısından oldukça iyi olur. Bu arada ismi fena uydurdum :D SDK kısaltması biraz karışabilir ama kimin umrunda SDK ileride benim Sistem Durum Kontrolörüm olacak :D

Şimdilik aklıma gelenler bu kadar eğer sorunuz meak ettiğiniz bir şey varsa buyrun sorun.

[Resim: http://rhodeus.org/upload/consol.png]
Bilgi meraktan gelir...
acehreli (Moderatör) #4
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4396 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Her int için calloc() çağrılacak mı? Onun yerine daha önceden tek calloc() ile ayırdığın büyük belleğin boş yerini o int olarak kullanmak daha hızlı olur herhalde. Büyük bir int dizisi gibi düşünürsen her elemanı bir değişken yerine kullanılabilir.

Ali
Avatar
zekeriyadurmus #5
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ı
Evet çağırılıyor, dediğiniz gibi olması daha mantıklı ama sistemde sorun çıkartmadan nasıl uygulayabilirim bilmiyorum. Yani o an oluşturulan o verinin başka bir yerde kullanılıp kullanılmadığını anlamam gerek. Mesela

a = 2.x() + 3.y()

ifadesinde programı yazan kişi bu x ve y fonksiyonları içerisinde bu 2 ve 3 verilerini saklayabilir eğer biz burada önceden oluşturulmuş 2 veya 3 ten birisinin değeri yerine yazarsak o saklanan veri zarar görür diye düşünüyorum. Aslında kaçırdığım anlamadığım bir şey var diye düşünüyorum yani bir şekilde dediğiniz gibi yapmak mümkün ama tam olarak nasıl olacak hiç bir fikrim yok.

Bu arada söylediğinizi yanlış anladığımı fark ettim :) Ama yukarıdaki maddelerde dursun istedim silmedim o yüzden :)

Aslında oldukça mantıklı söylediğiniz şey hatta kafama yattı ve birşeyler oluşmaya başladı. Birazcık beynim işlesin konu hakkında düşünsün :) şu hız testi olayını da hallettikten sonra hemen uygulamayı düşünüyorum hız testi sonuçlarını da buradan yazarım :) Harikasınız seviyorum sizi :) Teşekkür ederim :)

Zekeriya
Bilgi meraktan gelir...
Avatar
zekeriyadurmus #6
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ı
Ama şimdi kafamı bir şey kurcalamaya başladı :)

Ben RhInt den pointer döndürüyorum. 1000 elemanlı bir dizi oluşturduğum farz edelsin ve onun üzerine int değerini yazdım ve adresini aldım peki tür bilgisini nereye yazacağım? Şu aklıma geldi 1000 elemanlı ama 500 tane veri yazılabilir şekilde yapılabilir yani her bir alana int değeri yazmak yerine tür ve int değeri yazılır gereksiz yere 500 tane tür değeri yazılır ama sistem uygulanır. Ama bu şekilde yapmadan bir yolu olması gerek.

Zekeriya
Bilgi meraktan gelir...
Avatar
zekeriyadurmus #7
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ı
Hocam şimdi aşağıdaki gibi bir şey yaptım
struct dFunctionS{
    int typ;
    string name;
    void* fn;
}
void* opCall(void* self){
    return (cast(void* function(void*)) (cast(dFunctionS*) self).fn)(self);
/*    asm{
        mov EAX, dword ptr [EBP - 4];
        mov ECX, EAX;
        call dword ptr [ECX + 0xc];
    }
*/
}
opCall çağırılınca print fonksiyonu çağırılıyor burada yapmak istediğim şey print içindeki leave komutunu opCall içerisine taşımak. Fonksiyon parametrelerinin yönetim işini opCall a bırakmak istiyorum fark ettiyeniz sabit bir parametre kuralı da yok burada. Bu sayede gereksiz parametre tanımlamaları olmayacak yani bazı fonksiyonları tekrar tanımlamak zorunda kalmayacağım direk adres atmam belirtmem yeterli olacak. Ama şu leave olayının hallolması gerek :)

void print(void* x, void* self){
    asm{leave;}
    writeln(x);
    writeln((cast(_int*) x).value);
}

Zekeriya
Bilgi meraktan gelir...
acehreli (Moderatör) #8
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4396 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj #5
zekeriyadurmus:
Aslında oldukça mantıklı söylediğiniz şey

Aşağıdaki yazıda anlatılanların bazılarının artık yanlış olduklarını ve dilinin de eski kaldığını biliyoruz. Örneğin, sınıfların new ve delete işleçleri emekliye ayrıldı (ama sanırım hâlâ kullanılabiliyor) ve "Sınıf Nesnelerini Yığıtta Oluşturmak" başlığı bütünüyle yanlış (onun yerine scoped kullanılıyor).

Buna rağmen, anlatılan yöntemleri bilmek ve birbirleriyle karşılaştırmak yararlı olacak:

  http://ddili.org/makale/bellek.html

Ali
Avatar
zekeriyadurmus #9
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ı
Makaleyi daha öncede okumuştum ama şimdi okuyunca biraz daha iyi oldu. 1-2 şey kafamda canlanır gibi oldu ama hala eksiklikler var gibi biraz daha bu konu üzerine düşünmem gerekiyor :)

Ayrıca leave olayını aşağıdaki gibi hallettim :) print içerisinde bir şey yazmama gerek kalmadı artık :)

asm{
    mov EAX, dword ptr [EBP - 4];
    leave;
    jmp dword ptr [EAX + 0xc];
    ret;
}

Zekeriya
Bilgi meraktan gelir...
Avatar
zekeriyadurmus #10
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ı
Ali hocam, Salih hocam şu anda başarıyla gidiyorum bakalım inşallah bir aksilik de çıkmaz :)

Şu anda aşağıdaki gibi asm çıktısı üretiyorum. Kodlar çok performanslı değil ama şimdilik idare eder :)

Şu anda a = 1; while(a < 1000) {print(2); print(5)} kodunu ayrıştırmayı deniyorum :)

[Resim: http://rhodeus.org/upload/asm.png]

Zekeriya
Bilgi meraktan gelir...
Avatar
zekeriyadurmus #11
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ı
Hocam acayip heyecanlandım :)

a = 1; while(a < 1000000) {;a++} kodu

21 ms, 15 ╬╝s, and 5 hnsecs sürdü :D

[Resim: http://rhodeus.org/upload/loop.png]

Zekeriya
Bilgi meraktan gelir...
agora #12
Üye Tem 2013 tarihinden beri · 221 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Kardesim harika isler yapiyorsun umarim birgun cok cok cok iyi yerlere geleceksin :)
Avatar
zekeriyadurmus #13
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ı
Teşekkür ederim, Ali ve Salih hocalarım sayesinde :) Foruma üye olduğumdan beri sorduğum her şeye istisnasız cevap verdiler ilgilendiler adeta sıcak bir programcı yuvası gibi :) Bu foruma üye olduğumda programlamayı sadece klasik asp den ibaret sanıyor ve koyu bir şekilde savunuyordum diğer dillere yeni geçiş yapmaya başlamıştım (Python, perl ve D :) ) ki daha o zaman compiled dil ne demek haberim yok ve ASM kodlarını ise "abi mov jamp birşeyler var birde böyle eaks meaks birşeyler var işte çok karışık" şeklinde tarif ederdim. Şimdi ise Rhodeus Script'te etkin olarak kullanmaya başladım. Onların değerini bil :)

D dilinde yeni olduğun için söylüyorum arada bir D diline sayabilirsin ben çok yaşadım birkaç kez C ve türevlerine yönelmeyi bile düşündüm çünkü D'nin bazı olanakları halen daha yetersiz ama bu kesinlikle yapamayacağın anlamına gelmiyor. D gerçekten güçlü bir dil ve mümkün olduğunca hakim olmaya çalışmanı tavsiye ederim. Şu anda ben pek hakim değilim hala D ile yazılmış bir çok kütüphaneyi anlamakta güçlük çekiyorum özellikle de derleme zamanı çalıştırılan kodlar konusunda ama öğrenmek için acele etmiyorum zamanı gelince öğreniyorsunuz :)

Zekeriya
Bilgi meraktan gelir...
agora #14
Üye Tem 2013 tarihinden beri · 221 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
zekeriyadurmus:
Teşekkür ederim, Ali ve Salih hocalarım sayesinde :) Foruma üye olduğumdan beri sorduğum her şeye istisnasız cevap verdiler ilgilendiler adeta sıcak bir programcı yuvası gibi :) Bu foruma üye olduğumda programlamayı sadece klasik asp den ibaret sanıyor ve koyu bir şekilde savunuyordum diğer dillere yeni geçiş yapmaya başlamıştım (Python, perl ve D :) ) ki daha o zaman compiled dil ne demek haberim yok ve ASM kodlarını ise "abi mov jamp birşeyler var birde böyle eaks meaks birşeyler var işte çok karışık" şeklinde tarif ederdim. Şimdi ise Rhodeus Script'te etkin olarak kullanmaya başladım. Onların değerini bil :)

D dilinde yeni olduğun için söylüyorum arada bir D diline sayabilirsin ben çok yaşadım birkaç kez C ve türevlerine yönelmeyi bile düşündüm çünkü D'nin bazı olanakları halen daha yetersiz ama bu kesinlikle yapamayacağın anlamına gelmiyor. D gerçekten güçlü bir dil ve mümkün olduğunca hakim olmaya çalışmanı tavsiye ederim. Şu anda ben pek hakim değilim hala D ile yazılmış bir çok kütüphaneyi anlamakta güçlük çekiyorum özellikle de derleme zamanı çalıştırılan kodlar konusunda ama öğrenmek için acele etmiyorum zamanı gelince öğreniyorsunuz :)

Zekeriya

Benim cogu zamani GUI ile isim olmuyor. Genelde linux kullaniyorum :) D ile sistem kodlari yazacaksam tam benlik :)

windowsta ise solidworks gibi modelleme egitim seti hazirliyorum :)

gelelim diger dediklerine ben d'yi ogrenmeye calisiyorum :) ya aslinda cok zor degil ama nasi desem resmi sitesindeki bilgiler hic acik degil ya ogrenmek cok zor oluyor :)

ayrica rhodeus script'i olusturmak icin basit degil bence ama sen yapmissin cok basarilisin tebrikleri hak ediyor. lexer olayi hep kafami karistirdi.

daha onceden yine tahminim programlama ile bilgin vardi :)

aslinda biraz diretirsen d tabanli bi dil de yazabilirsin. web tarafli degil yani :)

ama cidden merak ediyorum hani ASM kodlarina erisebilmek icin baya buyuk bilgi birikimi de gerekir. Yani objdump der alirsin o kodlari o degil demek istedigim bunlari kullanmayi biliyorsun bu gercekten buyuk bilgi birikimi bence.

Umarim cok daha iyi yerlere gelirsin :) Ki geleceksindir de :) Cidden boyle seyler gururlandiriyor :)
Avatar
zekeriyadurmus #15
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ı
aslinda biraz diretirsen d tabanli bi dil de yazabilirsin. web tarafli degil yani
CGI ve vibe'yi sistemde çıkarırsam masaüstü dili olur :) Projeye ilk başladığımda yeni bir masaüstü diline gerek olmadığını düşünüyordum ama şu ise aynı fikirde değilim :) Bu assembly olayı gibi öğrenmem gereken şeyler olduğuna inanıyorum en azından o zamana kadar güçlü bir assembler oluştururum ama oluşturacağım masaüstü dili de yine yorumlanan bir dil olur ( tür tanımlamaları olacak ama :) ). Assembly söz konusu olduğunda çokta bir performans kaybı söz konusu olmuyor.

ama cidden merak ediyorum hani ASM kodlarina erisebilmek icin baya buyuk bilgi birikimi de gerekir. Yani objdump der alirsin o kodlari o degil demek istedigim bunlari kullanmayi biliyorsun bu gercekten buyuk bilgi birikimi bence.
Aslında görüldüğü gibi zor değil :) Geliştirme ortamım windows ve visuald ile (visual studio eklentisi) yazdığın kodların assembly çıktısını görebiliyorsun tabi kodları yorumlayarak gösterdiği için de http://onlinedisassembler.com/odaweb/ adresine hex kodlarını atarak yorumlanmamış saf asm kodunu elde ediyorum :)

daha onceden yine tahminim programlama ile bilgin vardi
ASP de 5. senemdi ama 5 senelik bir bilgi olduğu söylenemez :D (Çok gereksiz vakit ayırmışım :D ) Dediğim gibi diğer diller ile yeni tanışmıştım ama şunu biliyordum sonuçta yapılan işlemler aynı döngü yap karşılaştırma yap topla çıkar tabi D dili gibi gelişmiş olanakları yoktu zaten D dili ile tanıştıktan sonra diğer bütün diller bana uzaylı gibi gelmeye başladı ilk görüşte aşk resmen :)

gelelim diger dediklerine ben d'yi ogrenmeye calisiyorum  ya aslinda cok zor degil ama nasi desem resmi sitesindeki bilgiler hic acik degil ya ogrenmek cok zor oluyor
D acayip mantıklı bir dil :) Farklı bir tabir ama evet öyle en azından kendi yazdığım kod için yorum satırı yazmaya gerek duymuyorum aslında yazsam iyi olur ama koda baktığımda metin okur gibi anladığım için gerçekten basit diyebiliriz sadece biraz fazlaca özelliği var :) Fonksiyon referansı olarak gayet iyi ama öğrenmek için yeterli olmayabilir. Ali hocamın yazdığı pdf gayet iyi ama seviye olarak ağır kaçabilir. Ali hocam herşeyi en ince ayrıntısına kadar anlatmış ilk etapta anlamakta güçlük çekebilirsiniz ama tavsiyem takılı kalmayın devam edin okumaya beyniniz arkaplanda onu işlemeye devam ediyor aslında, başka bir zaman tekrar okuduğunuzda bir bakmışsıız anlamışsınız :) veya ihtiyacınız olan şeyin ne olduğunu anlarsınız sonradan üzerinde durursunuz.

windowsta ise solidworks gibi modelleme egitim seti hazirliyorum
İşiniz kolay değil gerçekten, kolay gelsin inşallah eğitim setini ve şu güvenlik olayını halledebilirsiniz. Ama ne kadar düşünürsem düşüneyim kırılamayacak bir sistem aklıma gelmiyor :) Ama yerinizde olsam diğer sistemleri incelerim mesela sizin gibi eğitim sistemi hazırlayan firmalar güvenlik önlemi alıyor mu alıyorsa ne tür şeyler alıyor ve işe yarıyor mu araştırmak lazım. Ama web üzerinden interaktif de yapabilirsiniz udemy tarzında :) Ama ne yaparsanız yapın kullanıcı videoları indirip paylaşabilir.

Umarim cok daha iyi yerlere gelirsin  Ki geleceksindir de  Cidden boyle seyler gururlandiriyor
İnşallah, bir şeyler yapmaya çalışıyoruz ve sonuçda elde ettik çok şükür :) Dileğim hep beraber bir yerlere gelmek çünkü ülke olarak güzel şeyler bunlar. Herşeyde olduğu gibi bilgisayardada baya geriden takip ediyoruz.

Zekeriya
Bilgi meraktan gelir...
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:
Sayfa:  1  2  sonraki 
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-05-28, 13:35:48 (UTC -07:00)