|
|
1.1 root 1: //
2: // nono
3: // Copyright (C) 2022 nono project
4: // Licensed under nono-license.txt
5: //
6:
7: //
8: // HD64180 逆アセンブラ
9: //
10:
11: #pragma once
12:
13: #include "disasm.h"
14: #include "hd64180.h"
15:
16: class hd64180disasm final : public DisasmLine
17: {
18: using inherited = DisasmLine;
19:
20: public:
21: hd64180disasm();
22: ~hd64180disasm() override;
23:
24: // 逆アセンブルを実行
25: bool Exec(DebuggerMemoryStream *mem_) override;
26:
27: private:
28: uint8 fetch8();
29: uint16 fetch16();
30:
31: uint16 ppc {};
32: ixiy_t ixiy {};
33: uint32 ixd {}; // (IX+d)/(IY+d)
34: uint8 op {}; // 直近の命令ワード
35:
36: std::string name {};
37: std::string arg1 {};
38: std::string arg2 {};
39:
40: std::string HL();
41: std::string HLin();
42: std::string IXin();
43: std::string ww();
44: std::string wwin();
45: std::string zz();
46: std::string rrr();
47: std::string sss();
48: std::string rrrsss(uint);
49: std::string fff() const;
50: std::string bbb() const;
51: std::string imm8();
52: std::string imm16();
53: std::string disp8();
54:
55: void ops_ddfd(ixiy_t);
56:
57: #define OP_PROTO(name) void __CONCAT(op_,name)()
58: #include "hd64180ops.h"
59: OP_PROTO(00);
60: OP_PROTO(illegal);
61: OP_PROTO(undef);
62: #undef OP_PROTO
63: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.