페이지를 더티하게 만들기 위해 (페이지 테이블 항목에서 더티 비트로 전환) 다음과 같이 페이지의 첫 번째 바이트를 터치합니다.
pageptr[0] = pageptr[0];
그러나 실제로 gcc는 데드 스토어 제거에 의한 명령문을 무시합니다. gcc 최적화를 방지하기 위해 다음과 같이 문을 다시 작성합니다.
volatile int tmp;
tmp = pageptr[0];
pageptr[0] = tmp;
트릭이 작동하는 것처럼 보이지만 다소 추합니다. 동일한 효과를 갖는 지시문이나 구문이 있는지 알고 싶습니다. 그리고 나는 -O0플래그 를 사용하고 싶지 않습니다 . 왜냐하면 그것은 또한 큰 성능 저하를 가져올 것이기 때문입니다.
-O0예를 들어 GCC가 일부 코드가 효과가 없음을 감지하면 단순히 제거하는 것과 같이, 예를 들어 GCC를 사용하더라도 죽은 코드 "최적화"를 방지 할 수 없었습니다. AFAIK 이것은 전에도 무대입니다 -O0... 그러나 그것은 단지 나의 경험입니다