用户模式 x64 中是否有任何方案可以让硬件自动对每个内存加载和存储应用边界检查,而无需编译器的显式检测?我也不想依赖操作系统支持(例如
mprotect
系统调用)。
<begin: enforce all accesses within 0x10000000-0x10000100>
...
mov ___, ___ #hardware automatically performs range check
...
<end enforcement>
AFAIK,英特尔 MPX 在每次检查内存访问之前需要显式
bndcl
/bndcu
指令。
不。原因很简单,CPU 不是水晶球,并且“边界是什么”信息必须来自“某个地方”。程序的任务是确定 “什么” 并成为 “某处”。