Con el fin de hacer una sucia página (de encender el bit de daños en la entrada de tabla de páginas), toco los primeros bytes de la página como esta:¿Cómo prevenir que gcc optimice algunas afirmaciones en C?
pageptr[0] = pageptr[0];
Pero en la práctica GCC ignorará la declaración de muertos eliminación de tiendas Con el fin de evitar que la optimización de gcc, me re-escritura de la declaración de la siguiente manera:
volatile int tmp;
tmp = pageptr[0];
pageptr[0] = tmp;
parece que el truco funciona, pero un poco fea. Me gustaría saber si hay directivas o sintaxis que tengan el mismo efecto. Y no quiero usar una bandera -O0
, ya que también traerá una gran penalización al rendimiento.
¿Ha intentado -O0? –
@Mark -O0 detendrá la optimización, pero también ralentizará el rendimiento del programa. Solo quiero evitar la optimización de este fragmento de código: P – ZelluX