请问这个函数为什么没有编译到正确的指令?
测试异常用的函数:
void CTrap::test_trap(UNUSED int n) { int a = 3, b = -1; *(int *)0x2 = 3; 页表中只初始化了3G~4G的项,用bochs模拟32M内存, |
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
没有缺页异常可以dump出页表内容看,后面那个被优化掉了,因为a,b的内容不再被用到,不需要计算。把a弄成static的应该就可以了。
3x bluster兄,dump看到的结果的确有0页表,0x40000020没有可以引起异常,上午的调试可能是搞错了。
以前用c编译过这段代码,a = a/0是不会被优化掉的,不知g++怎么就优没了。
再次3x。
写内核并使用GCC编译的话,可以使用volatile关键字.
明摆着就是编译正确了吗? 何以得出“没有编译到正确的指令”这种结论?