| 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 |
| 19 | int EaCalc(int a,int mask,int ea,int size,int top=0);\r |
| 20 | int EaRead(int a,int v,int ea,int size,int mask,int top=0);\r |
| 21 | int EaCanRead(int ea,int size);\r |
| 22 | int EaWrite(int a,int v,int ea,int size,int mask,int top=0);\r |
| 23 | int EaCanWrite(int ea);\r |
| 24 | int EaAn(int ea);\r |
| 25 | \r |
| 26 | // Main.cpp\r |
| 27 | extern int *CyJump; // Jump table\r |
| 28 | extern int ms; // If non-zero, output in Microsoft ARMASM format\r |
| 29 | extern char *Narm[4]; // Normal ARM Extensions for operand sizes 0,1,2\r |
| 30 | extern char *Sarm[4]; // Sign-extend ARM Extensions for operand sizes 0,1,2\r |
| 31 | extern int Cycles; // Current cycles for opcode\r |
| 32 | void ot(const char *format, ...);\r |
| 33 | void ltorg();\r |
| 34 | void CheckInterrupt(int op);\r |
| 35 | int MemHandler(int type,int size);\r |
| 36 | \r |
| 37 | // OpAny.cpp\r |
| 38 | int OpGetFlags(int subtract,int xbit,int sprecialz=0);\r |
| 39 | void OpUse(int op,int use);\r |
| 40 | void OpStart(int op);\r |
| 41 | void OpEnd();\r |
| 42 | int OpBase(int op,int sepa=0);\r |
| 43 | void OpAny(int op);\r |
| 44 | \r |
| 45 | //----------------------\r |
| 46 | // OpArith.cpp\r |
| 47 | int OpArith(int op);\r |
| 48 | int OpLea(int op);\r |
| 49 | int OpAddq(int op);\r |
| 50 | int OpArithReg(int op);\r |
| 51 | int OpMul(int op);\r |
| 52 | int OpAbcd(int op);\r |
| 53 | int OpNbcd(int op);\r |
| 54 | int OpAritha(int op);\r |
| 55 | int OpAddx(int op);\r |
| 56 | int OpCmpEor(int op);\r |
| 57 | int OpCmpm(int op);\r |
| 58 | int OpChk(int op);\r |
| 59 | int GetXBit(int subtract);\r |
| 60 | \r |
| 61 | // OpBranch.cpp\r |
| 62 | void OpPush32();\r |
| 63 | void OpPushSr(int high);\r |
| 64 | int OpTrap(int op);\r |
| 65 | int OpLink(int op);\r |
| 66 | int OpUnlk(int op);\r |
| 67 | int Op4E70(int op);\r |
| 68 | int OpJsr(int op);\r |
| 69 | int OpBranch(int op);\r |
| 70 | int OpDbra(int op);\r |
| 71 | \r |
| 72 | // OpLogic.cpp\r |
| 73 | int OpBtstReg(int op);\r |
| 74 | int OpBtstImm(int op);\r |
| 75 | int OpNeg(int op);\r |
| 76 | int OpSwap(int op);\r |
| 77 | int OpTst(int op);\r |
| 78 | int OpExt(int op);\r |
| 79 | int OpSet(int op);\r |
| 80 | int OpAsr(int op);\r |
| 81 | int OpAsrEa(int op);\r |
| 82 | int OpTas(int op, int gen_special=0);\r |
| 83 | \r |
| 84 | // OpMove.cpp\r |
| 85 | int OpMove(int op);\r |
| 86 | int OpLea(int op);\r |
| 87 | void OpFlagsToReg(int high);\r |
| 88 | void OpRegToFlags(int high);\r |
| 89 | int OpMoveSr(int op);\r |
| 90 | int OpArithSr(int op);\r |
| 91 | int OpPea(int op);\r |
| 92 | int OpMovem(int op);\r |
| 93 | int OpMoveq(int op);\r |
| 94 | int OpMoveUsp(int op);\r |
| 95 | int OpExg(int op);\r |
| 96 | int OpMovep(int op); // notaz\r |
| 97 | int OpStopReset(int op);\r |
| 98 | void SuperCheck(int op);\r |
| 99 | void SuperEnd(int op);\r |
| 100 | void SuperChange(int op);\r |