|
|
1.1 ! root 1: // ! 2: // nono ! 3: // Copyright (C) 2022 nono project ! 4: // Licensed under nono-license.txt ! 5: // ! 6: ! 7: #pragma once ! 8: ! 9: #include "mpu680x0.h" ! 10: ! 11: // ビットフィールド命令 ! 12: class acc_bf ! 13: { ! 14: public: ! 15: explicit acc_bf(MPU680x0Device *); ! 16: // デストラクタは無し。 ! 17: ! 18: void LoadReg(uint n); // Dn から値を読み込む ! 19: void LoadMem(uint32 addr); // メモリから値を読み込む ! 20: ! 21: // レジスタまたはメモリにストアする ! 22: void Store(uint n) { ! 23: if (n < 8) { ! 24: StoreReg(n); ! 25: } else { ! 26: StoreMem(); ! 27: } ! 28: } ! 29: ! 30: uint32 data {}; // 32bit 左詰めデータ ! 31: int32 offset {}; // (第2ワードで指定された) オフセット ! 32: uint32 width {}; // 幅 ! 33: ! 34: private: ! 35: void StoreReg(uint n); // 値を Dn に書き出す ! 36: void StoreMem(); // 値をメモリに書き出す ! 37: ! 38: MPU680x0Device *cpu {}; ! 39: ! 40: uint32 mask {}; // 32ビット左詰めマスク ! 41: uint32 ea {}; // オフセット計算後の EA ! 42: int32 local_offset {}; // 内部(32bit or 8bit 内)オフセット ! 43: uint bytes {}; // アクセスバイト数 ! 44: uint64 buf {}; // 40ビットのメモリバッファ ! 45: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.