|
|
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:
1.1.1.2 ! root 15: explicit acc_bf(MPU680x0Device *);
1.1 root 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 内)オフセット
1.1.1.2 ! root 43: uint bytes {}; // アクセスバイト数
1.1 root 44: uint64 buf {}; // 40ビットのメモリバッファ
45: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.