Jump to page: 1 2
Thread overview
July 06, 2013

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

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 06, 2013

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...

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 08, 2013

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.

http://rhodeus.org/upload/consol.png

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 08, 2013

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

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 09, 2013

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

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 09, 2013

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

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 09, 2013

Hocam şimdi aşağıdaki gibi bir şey yaptım
Alıntı:

>

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

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 09, 2013

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

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 09, 2013

Alıntı (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

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 10, 2013

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 :)

http://rhodeus.org/upload/asm.png

Zekeriya

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

« First   ‹ Prev
1 2