2012-07-09 8 views
6

nds uygulamasının, tüm bayt örneklerini tamsayılarla değiştirdiğimde biraz daha hızlı çalıştığını fark ettim. tüm çevrimiçi örnekler mümkün olduğunda u8/u16 örneklerini koydu. Bunun neden böyle olduğuna dair belirli bir neden var mı?Niçin tamsayılar NDS'deki bayttan daha hızlı işliyor?

+0

Belirli bir kod örneği verebilir misiniz? Örneklerde yapılarda 8/16 bit değişkenleri beyan ettiğinizi görüyorsunuz ve bunun yerine onları yerliler olarak kullanıyorsunuz. –

cevap

16

Nintendo DS'nin kullandığı ana işlemci, 32 bit işlemci olan ARM9'dur.

Referans: http://en.wikipedia.org/wiki/ARM9

                                       

Genellikle, CPU, bu durumda 32 bit olarak word sizes'da işlem gerçekleştirir. İşlemlerinize bağlı olarak, baytları tamsayıya çevirmek veya tersine çevirmek, işlemcide ek yüke neden olabilir. Bu dönüştürme ve 32 bit tamsayılar dışındaki değerler için olası talimat eksikliği, hız eksikliğine neden olabilir.

7

Daniel Li'nin söylediklerine tamamlayıcı olarak, ARM platformlarındaki bellek erişimi kelimesi hizalı olmalıdır, yani bellek getirileri 32 bitten fazla olmalıdır. Bir bayt değişkeninin bellekten getirilmesi, ilgili baytı içeren bütün sözcüğün getirilmesini ve işlemci kaydının en az önemli bitlerine sığdırmak için gerekli bit-bilge işlemlerin gerçekleştirilmesini ima eder.

Bu ek değişkenler, değişkenlerinizin gerçek hizalamasını bildiği için derleyici tarafından otomatik olarak yayılır.