-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathgalang8080.h
More file actions
80 lines (69 loc) · 2.44 KB
/
Copy pathgalang8080.h
File metadata and controls
80 lines (69 loc) · 2.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#ifndef GALANG8080_H
#define GALANG8080_H
#include "galanguage.h"
#include "gaparameter.h"
class GALang8080 : public GALanguage
{
public:
GALang8080();
};
//Represents an 8-bit register by 8080 name.
class GAParameter8080Reg8 : public GAParameter {
public:
GAParameter8080Reg8(const char* mask);
int match(GAParserOperand *op, int len) override;
QString decode(GALanguage *lang, uint64_t adr, const char *bytes, int inslen) override;
void encode(GALanguage *lang,
uint64_t adr, QByteArray &bytes,
GAParserOperand op,
int inslen
) override;
private:
//M is handled separately, but included for spacing.
QString regnames[8]={"b", "c", "d", "e",
"h", "l", "@hl", "a"};
};
//Represents 1-bit register pair, @bc or @de.
class GAParameter8080RP1 : public GAParameter {
public:
GAParameter8080RP1(const char* mask);
int match(GAParserOperand *op, int len) override;
QString decode(GALanguage *lang, uint64_t adr, const char *bytes, int inslen) override;
void encode(GALanguage *lang,
uint64_t adr, QByteArray &bytes,
GAParserOperand op,
int inslen
) override;
private:
//M is handled separately, but included for spacing.
QString regnames[2]={"bc", "de"};
};
//Represents 2-bit register pair.
class GAParameter8080RP2 : public GAParameter {
public:
GAParameter8080RP2(const char* mask, bool sp);
int match(GAParserOperand *op, int len) override;
QString decode(GALanguage *lang, uint64_t adr, const char *bytes, int inslen) override;
void encode(GALanguage *lang,
uint64_t adr, QByteArray &bytes,
GAParserOperand op,
int inslen
) override;
private:
//Final entry is either Flags+A or SP.
QString regnames[4]={"bc", "de", "hl", "fa"}; //Our register names.
QString stdregnames[4]={"b", "d", "h", "psw"}; //Standard register names.
};
//Represents 3-bit
class GAParameter8080EXP : public GAParameter {
public:
GAParameter8080EXP(const char* mask);
int match(GAParserOperand *op, int len) override;
QString decode(GALanguage *lang, uint64_t adr, const char *bytes, int inslen) override;
void encode(GALanguage *lang,
uint64_t adr, QByteArray &bytes,
GAParserOperand op,
int inslen
) override;
};
#endif // GALANG8080_H