mirror of https://github.com/digarok/gsplus.git
pre-calculate mnemonic hashes.
This commit is contained in:
parent
379784c757
commit
391681fb96
|
@ -56,7 +56,7 @@ enum {
|
|||
|
||||
enum {
|
||||
MNEMONIC_NONE,
|
||||
#define x(a) a,
|
||||
#define x(a, b) a,
|
||||
#include "mnemonics.x"
|
||||
#undef x
|
||||
MNEMONIC_LAST
|
||||
|
@ -69,7 +69,6 @@ enum {
|
|||
LONG_SHORT,
|
||||
};
|
||||
|
||||
#define CC3(a) ((a[0] << 16) | (a[1] << 8) | a[2])
|
||||
struct mnemonic_entry {
|
||||
const char *name;
|
||||
int value;
|
||||
|
@ -77,7 +76,7 @@ struct mnemonic_entry {
|
|||
};
|
||||
struct mnemonic_entry mnemonic_table[] = {
|
||||
{ NULL, 0 },
|
||||
#define x(a) { #a, CC3(#a), a },
|
||||
#define x(a, b) { #a, b, a },
|
||||
#include "mnemonics.x"
|
||||
#undef x
|
||||
};
|
||||
|
@ -536,7 +535,8 @@ static int mnemonic_cmp(const void *a, const void *b) {
|
|||
return key - e->value;
|
||||
}
|
||||
|
||||
|
||||
#define kBLT 0x424c54
|
||||
#define kBGE 0x424745
|
||||
static const char *parse_opcode(const char *cp, struct cookie *cookie) {
|
||||
|
||||
const char *YYCURSOR = cp;
|
||||
|
@ -592,8 +592,8 @@ static const char *parse_opcode(const char *cp, struct cookie *cookie) {
|
|||
sizeof(mnemonic_table) / sizeof(mnemonic_table[0]),
|
||||
sizeof(mnemonic_table[0]), mnemonic_cmp);
|
||||
if (e == NULL) {
|
||||
if (tmp == CC3("BLT")) e = &mnemonic_table[BCC];
|
||||
if (tmp == CC3("BGE")) e = &mnemonic_table[BCS];
|
||||
if (tmp == kBLT) e = &mnemonic_table[BCC];
|
||||
if (tmp == kBGE) e = &mnemonic_table[BCS];
|
||||
}
|
||||
if (!e) return NULL;
|
||||
cookie->mnemonic = e->mnemonic;
|
||||
|
|
184
src/mnemonics.x
184
src/mnemonics.x
|
@ -1,92 +1,92 @@
|
|||
x(ADC)
|
||||
x(AND)
|
||||
x(ASL)
|
||||
x(BCC)
|
||||
x(BCS)
|
||||
x(BEQ)
|
||||
x(BIT)
|
||||
x(BMI)
|
||||
x(BNE)
|
||||
x(BPL)
|
||||
x(BRA)
|
||||
x(BRK)
|
||||
x(BRL)
|
||||
x(BVC)
|
||||
x(BVS)
|
||||
x(CLC)
|
||||
x(CLD)
|
||||
x(CLI)
|
||||
x(CLV)
|
||||
x(CMP)
|
||||
x(COP)
|
||||
x(CPX)
|
||||
x(CPY)
|
||||
x(DEC)
|
||||
x(DEX)
|
||||
x(DEY)
|
||||
x(EOR)
|
||||
x(INC)
|
||||
x(INX)
|
||||
x(INY)
|
||||
x(JML)
|
||||
x(JMP)
|
||||
x(JSL)
|
||||
x(JSR)
|
||||
x(LDA)
|
||||
x(LDX)
|
||||
x(LDY)
|
||||
x(LSR)
|
||||
x(MVN)
|
||||
x(MVP)
|
||||
x(NOP)
|
||||
x(ORA)
|
||||
x(PEA)
|
||||
x(PEI)
|
||||
x(PER)
|
||||
x(PHA)
|
||||
x(PHB)
|
||||
x(PHD)
|
||||
x(PHK)
|
||||
x(PHP)
|
||||
x(PHX)
|
||||
x(PHY)
|
||||
x(PLA)
|
||||
x(PLB)
|
||||
x(PLD)
|
||||
x(PLP)
|
||||
x(PLX)
|
||||
x(PLY)
|
||||
x(REP)
|
||||
x(ROL)
|
||||
x(ROR)
|
||||
x(RTI)
|
||||
x(RTL)
|
||||
x(RTS)
|
||||
x(SBC)
|
||||
x(SEC)
|
||||
x(SED)
|
||||
x(SEI)
|
||||
x(SEP)
|
||||
x(STA)
|
||||
x(STP)
|
||||
x(STX)
|
||||
x(STY)
|
||||
x(STZ)
|
||||
x(TAX)
|
||||
x(TAY)
|
||||
x(TCD)
|
||||
x(TCS)
|
||||
x(TDC)
|
||||
x(TRB)
|
||||
x(TSB)
|
||||
x(TSC)
|
||||
x(TSX)
|
||||
x(TXA)
|
||||
x(TXS)
|
||||
x(TXY)
|
||||
x(TYA)
|
||||
x(TYX)
|
||||
x(WAI)
|
||||
x(WDM)
|
||||
x(XBA)
|
||||
x(XCE)
|
||||
x(ADC, 0x414443)
|
||||
x(AND, 0x414e44)
|
||||
x(ASL, 0x41534c)
|
||||
x(BCC, 0x424343)
|
||||
x(BCS, 0x424353)
|
||||
x(BEQ, 0x424551)
|
||||
x(BIT, 0x424954)
|
||||
x(BMI, 0x424d49)
|
||||
x(BNE, 0x424e45)
|
||||
x(BPL, 0x42504c)
|
||||
x(BRA, 0x425241)
|
||||
x(BRK, 0x42524b)
|
||||
x(BRL, 0x42524c)
|
||||
x(BVC, 0x425643)
|
||||
x(BVS, 0x425653)
|
||||
x(CLC, 0x434c43)
|
||||
x(CLD, 0x434c44)
|
||||
x(CLI, 0x434c49)
|
||||
x(CLV, 0x434c56)
|
||||
x(CMP, 0x434d50)
|
||||
x(COP, 0x434f50)
|
||||
x(CPX, 0x435058)
|
||||
x(CPY, 0x435059)
|
||||
x(DEC, 0x444543)
|
||||
x(DEX, 0x444558)
|
||||
x(DEY, 0x444559)
|
||||
x(EOR, 0x454f52)
|
||||
x(INC, 0x494e43)
|
||||
x(INX, 0x494e58)
|
||||
x(INY, 0x494e59)
|
||||
x(JML, 0x4a4d4c)
|
||||
x(JMP, 0x4a4d50)
|
||||
x(JSL, 0x4a534c)
|
||||
x(JSR, 0x4a5352)
|
||||
x(LDA, 0x4c4441)
|
||||
x(LDX, 0x4c4458)
|
||||
x(LDY, 0x4c4459)
|
||||
x(LSR, 0x4c5352)
|
||||
x(MVN, 0x4d564e)
|
||||
x(MVP, 0x4d5650)
|
||||
x(NOP, 0x4e4f50)
|
||||
x(ORA, 0x4f5241)
|
||||
x(PEA, 0x504541)
|
||||
x(PEI, 0x504549)
|
||||
x(PER, 0x504552)
|
||||
x(PHA, 0x504841)
|
||||
x(PHB, 0x504842)
|
||||
x(PHD, 0x504844)
|
||||
x(PHK, 0x50484b)
|
||||
x(PHP, 0x504850)
|
||||
x(PHX, 0x504858)
|
||||
x(PHY, 0x504859)
|
||||
x(PLA, 0x504c41)
|
||||
x(PLB, 0x504c42)
|
||||
x(PLD, 0x504c44)
|
||||
x(PLP, 0x504c50)
|
||||
x(PLX, 0x504c58)
|
||||
x(PLY, 0x504c59)
|
||||
x(REP, 0x524550)
|
||||
x(ROL, 0x524f4c)
|
||||
x(ROR, 0x524f52)
|
||||
x(RTI, 0x525449)
|
||||
x(RTL, 0x52544c)
|
||||
x(RTS, 0x525453)
|
||||
x(SBC, 0x534243)
|
||||
x(SEC, 0x534543)
|
||||
x(SED, 0x534544)
|
||||
x(SEI, 0x534549)
|
||||
x(SEP, 0x534550)
|
||||
x(STA, 0x535441)
|
||||
x(STP, 0x535450)
|
||||
x(STX, 0x535458)
|
||||
x(STY, 0x535459)
|
||||
x(STZ, 0x53545a)
|
||||
x(TAX, 0x544158)
|
||||
x(TAY, 0x544159)
|
||||
x(TCD, 0x544344)
|
||||
x(TCS, 0x544353)
|
||||
x(TDC, 0x544443)
|
||||
x(TRB, 0x545242)
|
||||
x(TSB, 0x545342)
|
||||
x(TSC, 0x545343)
|
||||
x(TSX, 0x545358)
|
||||
x(TXA, 0x545841)
|
||||
x(TXS, 0x545853)
|
||||
x(TXY, 0x545859)
|
||||
x(TYA, 0x545941)
|
||||
x(TYX, 0x545958)
|
||||
x(WAI, 0x574149)
|
||||
x(WDM, 0x57444d)
|
||||
x(XBA, 0x584241)
|
||||
x(XCE, 0x584345)
|
||||
|
|
Loading…
Reference in New Issue