我试图禁用我的CPU的内部和外部内存缓存,我的配置如上:-DELL Precision WorkStation -Intel Core 2 Duo E6550 2.33 GHz -Ubuntu 8.10
我试图通过BIOS禁用它,但它发现DELL计算机不允许用户访问缓存内存,我发现另一种方式,它是禁用缓存programmaticaly,英特尔架构手册A.3表明cr0注册可以通过设置位30设置为禁用缓存,我写了上面的代码然后:
INVD
mov eax,cr0
mov eax,40000000H;设置位30
mov cr0,eax
程序编译成功,但是当我尝试运行exe文件时,它就是Seg Faults(我正在使用NASM)
有人可以帮帮我吗?
请注意,即使你在内核0因为你在内核中或在受保护模式下在DOS上运行你的工具等,将0x40000000移动到cr0肯定会造成灾难.你看,控制寄存器(cr0)控制影响处理器运行方式的各种因素,例如启用分页,保护模式(不是直接)等.如果你取消所有这些位,你将最终完全不同如果您之前启用了分页,那么环境和获取分段错误就不足为奇了.
你应该这样做:
mov eax,cr0
or eax, 40000000H ;set bit 30 without clearing the others
mov cr0,eax
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4701 次 |
| 最近记录: |