Merhaba,
Buna benzer bir çalışma daha önce yapmıştım. Programlama dünyasında biliriz ve hep deriz ki switch case hızlıdır. Ancak daha önce hatırladıklarımdan, assembly karşılığı alt alta if()'leri sıralamaktan farkı olmadığını görmüştüm. Tabi buna etken şeyler olabilir. Beliki (sanrım sadece D'de olan?) final takısını koyduğumuzda default sekmesine gerek olmadığı için üretilen assembly kodu değişebilir. Bunu birlikte göreceğiz...:)
Şimdi küçük bir hafta sonu çalışmasına yayacağımız koda geçelim:
void main() {
int seç, sonuç;
asm {
pop EBX;
mov seç[EBP], EBX;
push EBX;
}
switch(seç) {
case 0: sonuç = 0; break;
case 1: sonuç = 1; break;
case 2: sonuç = 2; break;
case 3: sonuç = 3; break;
case 4: sonuç = 4; break;
case 5: sonuç = 5; break;
case 6: sonuç = 6; break;
case 7: sonuç = 7; break; // benim bilgisayarımda yığından, nedense 7 sonucu alınıyor...:)
case 8: sonuç = 8; break;
case 9: sonuç = 9; break;
default:
}
}
Bunu neden böyle yapıyorum çünkü an itibariyle Dpaste (http://dpaste.dzfl.pl/)'ye giremiyorum! İstiyorum ki diğer D derleyicileri ile güzel bir kıyas olsun. Ama henüz kendi bilgisayarımdaki obj2asm ile idare etmeliyim.
Özetle sonuçlar pek yakında ve aşama aşama nakledeceğim...
Başarılar...
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]