Al fine di rendere una pagina sporca (accendere il dirty bit nella voce della tabella delle pagine), mi tocco i primi byte della pagina come questa:Come impedire a gcc di ottimizzare alcune istruzioni in C?
pageptr[0] = pageptr[0];
Ma in pratica gcc ignorerà la dichiarazione di morti eliminazione negozio. Al fine di evitare gcc ottimizzandolo, ho ri-scrivere la dichiarazione come segue:
volatile int tmp;
tmp = pageptr[0];
pageptr[0] = tmp;
Sembra che il trucco funziona, ma un po 'brutto. Vorrei sapere se esistono direttive o sintassi che hanno lo stesso effetto? E non voglio usare il flag -O0
, dato che porterà anche una grande penalizzazione delle prestazioni.
Hai provato -O0? –
@Mark -O0 interromperà l'ottimizzazione, ma rallenterà anche le prestazioni del programma. Voglio solo impedire l'ottimizzazione di questo snippet di codice: P – ZelluX