cc68a136 |
1 | \r |
2 | #include <stdio.h>\r |
3 | #include <stdarg.h>\r |
4 | #include <stdlib.h>\r |
5 | #include <string.h>\r |
6 | \r |
7 | #include "config.h"\r |
8 | \r |
9 | // Disa.c\r |
10 | #include "Disa/Disa.h"\r |
11 | \r |
12 | // Ea.cpp\r |
13 | extern int g_jmp_cycle_table[];\r |
14 | extern int g_jsr_cycle_table[];\r |
15 | extern int g_lea_cycle_table[];\r |
16 | extern int g_pea_cycle_table[];\r |
17 | extern int g_movem_cycle_table[];\r |
18 | int Ea_add_ns(int *tab, int ea); // add nonstandard EA cycles\r |
b637c56a |
19 | int EaCalc(int a,int mask,int ea,int size,int top=0,int sign_extend=1); // 6\r |
20 | int EaRead(int a,int v,int ea,int size,int mask,int top=0,int sign_extend=1); // 7\r |
85a36a57 |
21 | int EaCalcRead(int r_ea,int r,int ea,int size,int mask,int sign_extend=1); // 6\r |
22 | int EaCalcReadNoSE(int r_ea,int r,int ea,int size,int mask);\r |
cc68a136 |
23 | int EaCanRead(int ea,int size);\r |
b637c56a |
24 | int EaWrite(int a,int v,int ea,int size,int mask,int top=0,int sign_extend_ea=1);\r |
cc68a136 |
25 | int EaCanWrite(int ea);\r |
26 | int EaAn(int ea);\r |
27 | \r |
28 | // Main.cpp\r |
cfb3dfa0 |
29 | extern int *CyJump; // Jump table\r |
30 | extern int ms; // If non-zero, output in Microsoft ARMASM format\r |
cc68a136 |
31 | extern char *Narm[4]; // Normal ARM Extensions for operand sizes 0,1,2\r |
32 | extern char *Sarm[4]; // Sign-extend ARM Extensions for operand sizes 0,1,2\r |
cfb3dfa0 |
33 | extern int Cycles; // Current cycles for opcode\r |
34 | extern int pc_dirty; // something changed PC during processing\r |
cc68a136 |
35 | void ot(const char *format, ...);\r |
36 | void ltorg();\r |
37 | void CheckInterrupt(int op);\r |
cfb3dfa0 |
38 | int MemHandler(int type,int size,int addrreg=0);\r |
39 | void FlushPC(void);\r |
cc68a136 |
40 | \r |
41 | // OpAny.cpp\r |
85a36a57 |
42 | extern int g_op;\r |
cc68a136 |
43 | int OpGetFlags(int subtract,int xbit,int sprecialz=0);\r |
44 | void OpUse(int op,int use);\r |
cfb3dfa0 |
45 | void OpStart(int op,int sea=0,int tea=0);\r |
46 | void OpEnd(int sea=0,int tea=0);\r |
85a36a57 |
47 | int OpBase(int op,int size,int sepa=0);\r |
cc68a136 |
48 | void OpAny(int op);\r |
49 | \r |
50 | //----------------------\r |
51 | // OpArith.cpp\r |
52 | int OpArith(int op);\r |
53 | int OpLea(int op);\r |
54 | int OpAddq(int op);\r |
55 | int OpArithReg(int op);\r |
56 | int OpMul(int op);\r |
57 | int OpAbcd(int op);\r |
58 | int OpNbcd(int op);\r |
59 | int OpAritha(int op);\r |
60 | int OpAddx(int op);\r |
61 | int OpCmpEor(int op);\r |
62 | int OpCmpm(int op);\r |
63 | int OpChk(int op);\r |
64 | int GetXBit(int subtract);\r |
65 | \r |
66 | // OpBranch.cpp\r |
67 | void OpPush32();\r |
68 | void OpPushSr(int high);\r |
69 | int OpTrap(int op);\r |
70 | int OpLink(int op);\r |
71 | int OpUnlk(int op);\r |
72 | int Op4E70(int op);\r |
73 | int OpJsr(int op);\r |
74 | int OpBranch(int op);\r |
75 | int OpDbra(int op);\r |
76 | \r |
77 | // OpLogic.cpp\r |
78 | int OpBtstReg(int op);\r |
79 | int OpBtstImm(int op);\r |
80 | int OpNeg(int op);\r |
81 | int OpSwap(int op);\r |
82 | int OpTst(int op);\r |
83 | int OpExt(int op);\r |
84 | int OpSet(int op);\r |
85 | int OpAsr(int op);\r |
86 | int OpAsrEa(int op);\r |
c008977e |
87 | int OpTas(int op, int gen_special=0);\r |
cc68a136 |
88 | \r |
89 | // OpMove.cpp\r |
90 | int OpMove(int op);\r |
91 | int OpLea(int op);\r |
92 | void OpFlagsToReg(int high);\r |
93 | void OpRegToFlags(int high);\r |
94 | int OpMoveSr(int op);\r |
95 | int OpArithSr(int op);\r |
96 | int OpPea(int op);\r |
97 | int OpMovem(int op);\r |
98 | int OpMoveq(int op);\r |
99 | int OpMoveUsp(int op);\r |
100 | int OpExg(int op);\r |
85a36a57 |
101 | int OpMovep(int op);\r |
cc68a136 |
102 | int OpStopReset(int op);\r |
103 | void SuperCheck(int op);\r |
85a36a57 |
104 | void SuperEnd(void);\r |
105 | void SuperChange(int op,int load_srh=1);\r |
106 | \r |