SORU
8 ŞUBAT 2010, PAZARTESİ


Nasıl gcc C Bazı ifadeleri optimize önlemek için?

Bir kirli sayfa (sayfa tablosu girdisi kirli bit geçiş) yapmak için, ben bu sayfanın ilk bayt dokunun:

pageptr[0] = pageptr[0];

Ama pratikte gcc ölü mağaza eleme tarafından ifadesi göz ardı eder. Gcc optimizasyon önlemek için, ben yeniden yazmak deyimi aşağıdaki gibi

volatile int tmp;
tmp = pageptr[0];
pageptr[0] = tmp;

Hile çalışıyor gibi görünüyor, ama biraz çirkin. Orada herhangi bir Direktif bilmek istiyorum ya da aynı etkiye sahip olan varmıdır? Ve harika bir performans cezası da getirecektir beri -O0 bir bayrak kullanmak istemiyorum.

CEVAP
28 Ocak 2012, CUMARTESİ


Yeni parametreleri kullanmak yerine, aynı zamanda ihtiyaçları için __attribute__((optimize("O0"))) kullanabilirsiniz. Bu sadece tek bir işlevi ve tüm fonksiyonları aynı dosya içinde tanımlanan uygulama avantajı vardır.

Kullanım örneği:

void __attribute__((optimize("O0"))) foo(unsigned char data) {
    // unmodifiable compiler code
}

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bethliebert

    bethliebert

    23 EKİM 2008
  • ChasesAndCrashes

    ChasesAndCra

    31 Temmuz 2009
  • Microsoft Research

    Microsoft Re

    24 EKİM 2008