我正在阅读操作系统理论,其中我发现一个进程具有它的虚拟地址空间(为了简单起见,松散地使用技术库和限制寄存器)但它不能访问任何其他地址。但是在嵌入式系统中,我们可以使用placement new 或reinterpret_cast (C++) 来访问内存映射的IO 地址,但是如果我们不能访问除了进程的虚拟地址空间之外的任何其他地址,这怎么可能呢?
class ControlReg {
public:
bool ready() const { return readyBit; }
private:
volatile unsigned readyBit :1;
};
ControlReg *pcr = reinterpret_cast<ControlReg*>(0xFFFF0000); // address 0xFFFF0000 is still virtual or absolute physical mapped address?
是否有一些指令可以让进程访问任何地址?. 我想我很困惑,有人可以帮我看清楚吗?
谢谢