--- nono/vm/mpu.h 2026/04/29 17:04:52 1.1.1.7 +++ nono/vm/mpu.h 2026/04/29 17:05:06 1.1.1.10 @@ -14,7 +14,7 @@ class MPUDevice : public Device { using inherited = Device; public: - MPUDevice(); + MPUDevice(const std::string& objname_); virtual ~MPUDevice() override; bool Init() override; @@ -48,8 +48,22 @@ class MPUDevice : public Device // 割り込み発生を MPU に通知 virtual void Interrupt(int level) = 0; + // MPU からのアクセスをエミュレートする。 + // アドレスは論理アドレス。 + // 空間は現在のデータ空間。 + // アクセスエラーは (int64)-1 を返す。 + virtual uint64 Read8(uint32 addr) = 0; + virtual uint64 Read16(uint32 addr) = 0; + virtual uint64 Read32(uint32 addr) = 0; + virtual uint64 Write8(uint32 addr, uint32 data) = 0; + virtual uint64 Write16(uint32 addr, uint32 data) = 0; + virtual uint64 Write32(uint32 addr, uint32 data) = 0; + protected: int clock_khz {}; // MPU クロック [kHz] + + // Round Mode (モニタ表示用) + static const char * const rmstr[4]; }; extern std::unique_ptr gMPU;