为了使页面变脏(在页面表项中打开脏位),我会这样触碰页面的前几个字节:
但在实际操作中,GCC会忽略死代码消除的语句。为了防止GCC对其进行优化,我将该语句改写如下:
pageptr[0] = pageptr[0];
但在实际操作中,GCC会忽略死代码消除的语句。为了防止GCC对其进行优化,我将该语句改写如下:
volatile int tmp;
tmp = pageptr[0];
pageptr[0] = tmp;
看起来这个技巧是有效的,但有点不太美观。我想知道是否有任何指令或语法可以达到相同的效果?而且我不想使用-O0标志,因为它会带来很大的性能损失。
-O0
也无法防止死代码“优化”,例如,当GCC检测到某些代码没有效果时,它会直接将其删除。据我所知,这是在-O0
之前的一个阶段...但这只是我的经验。 - smoothware