-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathassemble68k.h
129 lines (120 loc) · 1.27 KB
/
assemble68k.h
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
enum OPCODE{
ORI,
ANDI,
SUBI,
ADDI,
EORI,
CMPI,
BTST,
BCHG,
BCLR,
BSET,
MOVEP,
MOVEA,
MOVE,
NEGX,
CLR,
NEG,
NOT,
EXT,
NBCD,
SWAP,
PEA,
ILLEGAL,
TAS,
TST,
TRAP,
LINK,
UNLK,
RESET,
NOP,
STOP,
RTE,
RTS,
TRAPV,
RTR,
JSR,
JMP,
MOVEM,
LEA,
CHK,
ADDQ,
SUBQ,
Scc,
DBcc,
BRA,
BSR,
Bcc,
MOVEQ,
DIVU,
DIVS,
SBCD,
OR,
SUB,
SUBX,
SUBA,
EOR,
CMPM,
CMP,
CMPA,
MULU,
MULS,
ABCD,
EXG,
AND,
ADD,
ADDX,
ADDA,
ASd,
LSd,
ROXd,
ROd
};
enum SIZE{
BYTE,
WORD,
LONG
};
enum ADDRESS_MODE{
DATA_REG,
ADDRESS_REG,
ADDRESS,
ADDRESS_PI,
ADDRESS_PD,
ADDRESS_DISP,
ADDRESS_IDX,
PC_DISP,
PC_IDX,
ABS_SHORT,
ABS_LONG,
IMMEDIATE
};
typedef struct operation operation;
struct operation{
OPCODE op;
SIZE size;
ADDRESS_MODE mode1;
ADDRESS_MODE mode2;
unsigned char reg1;
unsigned int displacement1;
unsigned char data_reg1;
unsigned char reg2;
unsigned int displacement2;
unsigned char data_reg2;
unsigned long int immediate;
};
typedef struct file_bits file_bits;
struct file_bits{
FILES *fsp;
unsigned char current_bitnum;
unsigned char current_byte;
};
typedef struct label_entry label_entry;
struct label_entry{
unsigned char found;
union{
unsigned int address;
unsigned int file_pointer;
};
label_entry *next;
};