SORU
4 Ocak 2014, CUMARTESİ


Neden SEO bu işlev öldürür mü?

Biz son zamanlarda birçok dilde programlama özel hakkında Üniversitede bir ders vardı. Aşağıdaki işlevi yazdı:

inline u64 Swap_64(u64 x)
{
    u64 tmp;
    (*(u32*)&tmp)       = Swap_32(*(((u32*)&x) 1));
    (*(((u32*)&tmp) 1)) = Swap_32(*(u32*) &x);

    return tmp;
}

Ben tamamen bu da okunabilirlik açısından çok kötü bir tarzı olduğunu anlamak olsa da, asıl mesele bu kod parçası optimizasyonu yüksek bir düzeyde etkin kadar iyi üretim kodu olarak çalıştı. Sonra kodu sadece bir şey yapmaz.

tmp derleyici tarafından optimize edilmiş olacaktı değişkeni için tüm atamaları söyledi. Ama niçin böyle olacağını?

Değişkenleri ilan edilmesi için gereken şartlar olduğunu anlıyorumuçucuderleyici eğer hiç okuma veya yazılı olduğunu düşünüyorsa bile onlara dokunmaz ama bu burada olacağını neden bilmiyorum.

CEVAP
4 Ocak 2014, CUMARTESİ


Argümanlar eğer işaret varsa diğer (char* dışında) kabul edilir işaretçi C , temelde farklı türleri ("strict aliasing" kuralları). Bu bazı iyileştirmeler sağlar.

Burada, u64 tmp u64 olarak değiştirilmiş.
u32* içerik değiştirildiğinde, ama ilgisiz 'u64 tmp' u64 tmp nop olarak görülebilir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 3dmmfavs

    3dmmfavs

    29 Kasım 2009
  • LearnKey

    LearnKey

    19 AĞUSTOS 2008
  • Makeup Lover

    Makeup Lover

    12 HAZİRAN 2011