mirror of
https://github.com/odin-lang/Odin.git
synced 2026-06-19 16:42:33 +00:00
Minimize mos65816 decoding tables
This commit is contained in:
@@ -297,261 +297,261 @@ DECODE_ENTRIES := [268]Decode_Entry{
|
||||
{ .SBC, {.MEM_LONG_X, .NONE}, {.LONG_1_ADDR, .NONE}, 0xFF, 4, {} },
|
||||
}
|
||||
DECODE_INDEX_OPCODE := [256]Decode_Index{
|
||||
/* 00 */ {0, 1},
|
||||
/* 01 */ {1, 1},
|
||||
/* 02 */ {2, 1},
|
||||
/* 03 */ {3, 1},
|
||||
/* 04 */ {4, 1},
|
||||
/* 05 */ {5, 1},
|
||||
/* 06 */ {6, 1},
|
||||
/* 07 */ {7, 1},
|
||||
/* 08 */ {8, 1},
|
||||
/* 09 */ {9, 2},
|
||||
/* 0A */ {11, 1},
|
||||
/* 0B */ {12, 1},
|
||||
/* 0C */ {13, 1},
|
||||
/* 0D */ {14, 1},
|
||||
/* 0E */ {15, 1},
|
||||
/* 0F */ {16, 1},
|
||||
/* 10 */ {17, 1},
|
||||
/* 11 */ {18, 1},
|
||||
/* 12 */ {19, 1},
|
||||
/* 13 */ {20, 1},
|
||||
/* 14 */ {21, 1},
|
||||
/* 15 */ {22, 1},
|
||||
/* 16 */ {23, 1},
|
||||
/* 17 */ {24, 1},
|
||||
/* 18 */ {25, 1},
|
||||
/* 19 */ {26, 1},
|
||||
/* 1A */ {27, 1},
|
||||
/* 1B */ {28, 1},
|
||||
/* 1C */ {29, 1},
|
||||
/* 1D */ {30, 1},
|
||||
/* 1E */ {31, 1},
|
||||
/* 1F */ {32, 1},
|
||||
/* 20 */ {33, 1},
|
||||
/* 21 */ {34, 1},
|
||||
/* 22 */ {35, 1},
|
||||
/* 23 */ {36, 1},
|
||||
/* 24 */ {37, 1},
|
||||
/* 25 */ {38, 1},
|
||||
/* 26 */ {39, 1},
|
||||
/* 27 */ {40, 1},
|
||||
/* 28 */ {41, 1},
|
||||
/* 29 */ {42, 2},
|
||||
/* 2A */ {44, 1},
|
||||
/* 2B */ {45, 1},
|
||||
/* 2C */ {46, 1},
|
||||
/* 2D */ {47, 1},
|
||||
/* 2E */ {48, 1},
|
||||
/* 2F */ {49, 1},
|
||||
/* 30 */ {50, 1},
|
||||
/* 31 */ {51, 1},
|
||||
/* 32 */ {52, 1},
|
||||
/* 33 */ {53, 1},
|
||||
/* 34 */ {54, 1},
|
||||
/* 35 */ {55, 1},
|
||||
/* 36 */ {56, 1},
|
||||
/* 37 */ {57, 1},
|
||||
/* 38 */ {58, 1},
|
||||
/* 39 */ {59, 1},
|
||||
/* 3A */ {60, 1},
|
||||
/* 3B */ {61, 1},
|
||||
/* 3C */ {62, 1},
|
||||
/* 3D */ {63, 1},
|
||||
/* 3E */ {64, 1},
|
||||
/* 3F */ {65, 1},
|
||||
/* 40 */ {66, 1},
|
||||
/* 41 */ {67, 1},
|
||||
/* 42 */ {68, 1},
|
||||
/* 43 */ {69, 1},
|
||||
/* 44 */ {70, 1},
|
||||
/* 45 */ {71, 1},
|
||||
/* 46 */ {72, 1},
|
||||
/* 47 */ {73, 1},
|
||||
/* 48 */ {74, 1},
|
||||
/* 49 */ {75, 2},
|
||||
/* 4A */ {77, 1},
|
||||
/* 4B */ {78, 1},
|
||||
/* 4C */ {79, 1},
|
||||
/* 4D */ {80, 1},
|
||||
/* 4E */ {81, 1},
|
||||
/* 4F */ {82, 1},
|
||||
/* 50 */ {83, 1},
|
||||
/* 51 */ {84, 1},
|
||||
/* 52 */ {85, 1},
|
||||
/* 53 */ {86, 1},
|
||||
/* 54 */ {87, 1},
|
||||
/* 55 */ {88, 1},
|
||||
/* 56 */ {89, 1},
|
||||
/* 57 */ {90, 1},
|
||||
/* 58 */ {91, 1},
|
||||
/* 59 */ {92, 1},
|
||||
/* 5A */ {93, 1},
|
||||
/* 5B */ {94, 1},
|
||||
/* 5C */ {95, 1},
|
||||
/* 5D */ {96, 1},
|
||||
/* 5E */ {97, 1},
|
||||
/* 5F */ {98, 1},
|
||||
/* 60 */ {99, 1},
|
||||
/* 61 */ {100, 1},
|
||||
/* 62 */ {101, 1},
|
||||
/* 63 */ {102, 1},
|
||||
/* 64 */ {103, 1},
|
||||
/* 65 */ {104, 1},
|
||||
/* 66 */ {105, 1},
|
||||
/* 67 */ {106, 1},
|
||||
/* 68 */ {107, 1},
|
||||
/* 69 */ {108, 2},
|
||||
/* 6A */ {110, 1},
|
||||
/* 6B */ {111, 1},
|
||||
/* 6C */ {112, 1},
|
||||
/* 6D */ {113, 1},
|
||||
/* 6E */ {114, 1},
|
||||
/* 6F */ {115, 1},
|
||||
/* 70 */ {116, 1},
|
||||
/* 71 */ {117, 1},
|
||||
/* 72 */ {118, 1},
|
||||
/* 73 */ {119, 1},
|
||||
/* 74 */ {120, 1},
|
||||
/* 75 */ {121, 1},
|
||||
/* 76 */ {122, 1},
|
||||
/* 77 */ {123, 1},
|
||||
/* 78 */ {124, 1},
|
||||
/* 79 */ {125, 1},
|
||||
/* 7A */ {126, 1},
|
||||
/* 7B */ {127, 1},
|
||||
/* 7C */ {128, 1},
|
||||
/* 7D */ {129, 1},
|
||||
/* 7E */ {130, 1},
|
||||
/* 7F */ {131, 1},
|
||||
/* 80 */ {132, 1},
|
||||
/* 81 */ {133, 1},
|
||||
/* 82 */ {134, 1},
|
||||
/* 83 */ {135, 1},
|
||||
/* 84 */ {136, 1},
|
||||
/* 85 */ {137, 1},
|
||||
/* 86 */ {138, 1},
|
||||
/* 87 */ {139, 1},
|
||||
/* 88 */ {140, 1},
|
||||
/* 89 */ {141, 2},
|
||||
/* 8A */ {143, 1},
|
||||
/* 8B */ {144, 1},
|
||||
/* 8C */ {145, 1},
|
||||
/* 8D */ {146, 1},
|
||||
/* 8E */ {147, 1},
|
||||
/* 8F */ {148, 1},
|
||||
/* 90 */ {149, 1},
|
||||
/* 91 */ {150, 1},
|
||||
/* 92 */ {151, 1},
|
||||
/* 93 */ {152, 1},
|
||||
/* 94 */ {153, 1},
|
||||
/* 95 */ {154, 1},
|
||||
/* 96 */ {155, 1},
|
||||
/* 97 */ {156, 1},
|
||||
/* 98 */ {157, 1},
|
||||
/* 99 */ {158, 1},
|
||||
/* 9A */ {159, 1},
|
||||
/* 9B */ {160, 1},
|
||||
/* 9C */ {161, 1},
|
||||
/* 9D */ {162, 1},
|
||||
/* 9E */ {163, 1},
|
||||
/* 9F */ {164, 1},
|
||||
/* A0 */ {165, 2},
|
||||
/* A1 */ {167, 1},
|
||||
/* A2 */ {168, 2},
|
||||
/* A3 */ {170, 1},
|
||||
/* A4 */ {171, 1},
|
||||
/* A5 */ {172, 1},
|
||||
/* A6 */ {173, 1},
|
||||
/* A7 */ {174, 1},
|
||||
/* A8 */ {175, 1},
|
||||
/* A9 */ {176, 2},
|
||||
/* AA */ {178, 1},
|
||||
/* AB */ {179, 1},
|
||||
/* AC */ {180, 1},
|
||||
/* AD */ {181, 1},
|
||||
/* AE */ {182, 1},
|
||||
/* AF */ {183, 1},
|
||||
/* B0 */ {184, 1},
|
||||
/* B1 */ {185, 1},
|
||||
/* B2 */ {186, 1},
|
||||
/* B3 */ {187, 1},
|
||||
/* B4 */ {188, 1},
|
||||
/* B5 */ {189, 1},
|
||||
/* B6 */ {190, 1},
|
||||
/* B7 */ {191, 1},
|
||||
/* B8 */ {192, 1},
|
||||
/* B9 */ {193, 1},
|
||||
/* BA */ {194, 1},
|
||||
/* BB */ {195, 1},
|
||||
/* BC */ {196, 1},
|
||||
/* BD */ {197, 1},
|
||||
/* BE */ {198, 1},
|
||||
/* BF */ {199, 1},
|
||||
/* C0 */ {200, 2},
|
||||
/* C1 */ {202, 1},
|
||||
/* C2 */ {203, 1},
|
||||
/* C3 */ {204, 1},
|
||||
/* C4 */ {205, 1},
|
||||
/* C5 */ {206, 1},
|
||||
/* C6 */ {207, 1},
|
||||
/* C7 */ {208, 1},
|
||||
/* C8 */ {209, 1},
|
||||
/* C9 */ {210, 2},
|
||||
/* CA */ {212, 1},
|
||||
/* CB */ {213, 1},
|
||||
/* CC */ {214, 1},
|
||||
/* CD */ {215, 1},
|
||||
/* CE */ {216, 1},
|
||||
/* CF */ {217, 1},
|
||||
/* D0 */ {218, 1},
|
||||
/* D1 */ {219, 1},
|
||||
/* D2 */ {220, 1},
|
||||
/* D3 */ {221, 1},
|
||||
/* D4 */ {222, 1},
|
||||
/* D5 */ {223, 1},
|
||||
/* D6 */ {224, 1},
|
||||
/* D7 */ {225, 1},
|
||||
/* D8 */ {226, 1},
|
||||
/* D9 */ {227, 1},
|
||||
/* DA */ {228, 1},
|
||||
/* DB */ {229, 1},
|
||||
/* DC */ {230, 1},
|
||||
/* DD */ {231, 1},
|
||||
/* DE */ {232, 1},
|
||||
/* DF */ {233, 1},
|
||||
/* E0 */ {234, 2},
|
||||
/* E1 */ {236, 1},
|
||||
/* E2 */ {237, 1},
|
||||
/* E3 */ {238, 1},
|
||||
/* E4 */ {239, 1},
|
||||
/* E5 */ {240, 1},
|
||||
/* E6 */ {241, 1},
|
||||
/* E7 */ {242, 1},
|
||||
/* E8 */ {243, 1},
|
||||
/* E9 */ {244, 2},
|
||||
/* EA */ {246, 1},
|
||||
/* EB */ {247, 1},
|
||||
/* EC */ {248, 1},
|
||||
/* ED */ {249, 1},
|
||||
/* EE */ {250, 1},
|
||||
/* EF */ {251, 1},
|
||||
/* F0 */ {252, 1},
|
||||
/* F1 */ {253, 1},
|
||||
/* F2 */ {254, 1},
|
||||
/* F3 */ {255, 1},
|
||||
/* F4 */ {256, 1},
|
||||
/* F5 */ {257, 1},
|
||||
/* F6 */ {258, 1},
|
||||
/* F7 */ {259, 1},
|
||||
/* F8 */ {260, 1},
|
||||
/* F9 */ {261, 1},
|
||||
/* FA */ {262, 1},
|
||||
/* FB */ {263, 1},
|
||||
/* FC */ {264, 1},
|
||||
/* FD */ {265, 1},
|
||||
/* FE */ {266, 1},
|
||||
/* FF */ {267, 1},
|
||||
0x00 = {0, 1},
|
||||
0x01 = {1, 1},
|
||||
0x02 = {2, 1},
|
||||
0x03 = {3, 1},
|
||||
0x04 = {4, 1},
|
||||
0x05 = {5, 1},
|
||||
0x06 = {6, 1},
|
||||
0x07 = {7, 1},
|
||||
0x08 = {8, 1},
|
||||
0x09 = {9, 2},
|
||||
0x0A = {11, 1},
|
||||
0x0B = {12, 1},
|
||||
0x0C = {13, 1},
|
||||
0x0D = {14, 1},
|
||||
0x0E = {15, 1},
|
||||
0x0F = {16, 1},
|
||||
0x10 = {17, 1},
|
||||
0x11 = {18, 1},
|
||||
0x12 = {19, 1},
|
||||
0x13 = {20, 1},
|
||||
0x14 = {21, 1},
|
||||
0x15 = {22, 1},
|
||||
0x16 = {23, 1},
|
||||
0x17 = {24, 1},
|
||||
0x18 = {25, 1},
|
||||
0x19 = {26, 1},
|
||||
0x1A = {27, 1},
|
||||
0x1B = {28, 1},
|
||||
0x1C = {29, 1},
|
||||
0x1D = {30, 1},
|
||||
0x1E = {31, 1},
|
||||
0x1F = {32, 1},
|
||||
0x20 = {33, 1},
|
||||
0x21 = {34, 1},
|
||||
0x22 = {35, 1},
|
||||
0x23 = {36, 1},
|
||||
0x24 = {37, 1},
|
||||
0x25 = {38, 1},
|
||||
0x26 = {39, 1},
|
||||
0x27 = {40, 1},
|
||||
0x28 = {41, 1},
|
||||
0x29 = {42, 2},
|
||||
0x2A = {44, 1},
|
||||
0x2B = {45, 1},
|
||||
0x2C = {46, 1},
|
||||
0x2D = {47, 1},
|
||||
0x2E = {48, 1},
|
||||
0x2F = {49, 1},
|
||||
0x30 = {50, 1},
|
||||
0x31 = {51, 1},
|
||||
0x32 = {52, 1},
|
||||
0x33 = {53, 1},
|
||||
0x34 = {54, 1},
|
||||
0x35 = {55, 1},
|
||||
0x36 = {56, 1},
|
||||
0x37 = {57, 1},
|
||||
0x38 = {58, 1},
|
||||
0x39 = {59, 1},
|
||||
0x3A = {60, 1},
|
||||
0x3B = {61, 1},
|
||||
0x3C = {62, 1},
|
||||
0x3D = {63, 1},
|
||||
0x3E = {64, 1},
|
||||
0x3F = {65, 1},
|
||||
0x40 = {66, 1},
|
||||
0x41 = {67, 1},
|
||||
0x42 = {68, 1},
|
||||
0x43 = {69, 1},
|
||||
0x44 = {70, 1},
|
||||
0x45 = {71, 1},
|
||||
0x46 = {72, 1},
|
||||
0x47 = {73, 1},
|
||||
0x48 = {74, 1},
|
||||
0x49 = {75, 2},
|
||||
0x4A = {77, 1},
|
||||
0x4B = {78, 1},
|
||||
0x4C = {79, 1},
|
||||
0x4D = {80, 1},
|
||||
0x4E = {81, 1},
|
||||
0x4F = {82, 1},
|
||||
0x50 = {83, 1},
|
||||
0x51 = {84, 1},
|
||||
0x52 = {85, 1},
|
||||
0x53 = {86, 1},
|
||||
0x54 = {87, 1},
|
||||
0x55 = {88, 1},
|
||||
0x56 = {89, 1},
|
||||
0x57 = {90, 1},
|
||||
0x58 = {91, 1},
|
||||
0x59 = {92, 1},
|
||||
0x5A = {93, 1},
|
||||
0x5B = {94, 1},
|
||||
0x5C = {95, 1},
|
||||
0x5D = {96, 1},
|
||||
0x5E = {97, 1},
|
||||
0x5F = {98, 1},
|
||||
0x60 = {99, 1},
|
||||
0x61 = {100, 1},
|
||||
0x62 = {101, 1},
|
||||
0x63 = {102, 1},
|
||||
0x64 = {103, 1},
|
||||
0x65 = {104, 1},
|
||||
0x66 = {105, 1},
|
||||
0x67 = {106, 1},
|
||||
0x68 = {107, 1},
|
||||
0x69 = {108, 2},
|
||||
0x6A = {110, 1},
|
||||
0x6B = {111, 1},
|
||||
0x6C = {112, 1},
|
||||
0x6D = {113, 1},
|
||||
0x6E = {114, 1},
|
||||
0x6F = {115, 1},
|
||||
0x70 = {116, 1},
|
||||
0x71 = {117, 1},
|
||||
0x72 = {118, 1},
|
||||
0x73 = {119, 1},
|
||||
0x74 = {120, 1},
|
||||
0x75 = {121, 1},
|
||||
0x76 = {122, 1},
|
||||
0x77 = {123, 1},
|
||||
0x78 = {124, 1},
|
||||
0x79 = {125, 1},
|
||||
0x7A = {126, 1},
|
||||
0x7B = {127, 1},
|
||||
0x7C = {128, 1},
|
||||
0x7D = {129, 1},
|
||||
0x7E = {130, 1},
|
||||
0x7F = {131, 1},
|
||||
0x80 = {132, 1},
|
||||
0x81 = {133, 1},
|
||||
0x82 = {134, 1},
|
||||
0x83 = {135, 1},
|
||||
0x84 = {136, 1},
|
||||
0x85 = {137, 1},
|
||||
0x86 = {138, 1},
|
||||
0x87 = {139, 1},
|
||||
0x88 = {140, 1},
|
||||
0x89 = {141, 2},
|
||||
0x8A = {143, 1},
|
||||
0x8B = {144, 1},
|
||||
0x8C = {145, 1},
|
||||
0x8D = {146, 1},
|
||||
0x8E = {147, 1},
|
||||
0x8F = {148, 1},
|
||||
0x90 = {149, 1},
|
||||
0x91 = {150, 1},
|
||||
0x92 = {151, 1},
|
||||
0x93 = {152, 1},
|
||||
0x94 = {153, 1},
|
||||
0x95 = {154, 1},
|
||||
0x96 = {155, 1},
|
||||
0x97 = {156, 1},
|
||||
0x98 = {157, 1},
|
||||
0x99 = {158, 1},
|
||||
0x9A = {159, 1},
|
||||
0x9B = {160, 1},
|
||||
0x9C = {161, 1},
|
||||
0x9D = {162, 1},
|
||||
0x9E = {163, 1},
|
||||
0x9F = {164, 1},
|
||||
0xA0 = {165, 2},
|
||||
0xA1 = {167, 1},
|
||||
0xA2 = {168, 2},
|
||||
0xA3 = {170, 1},
|
||||
0xA4 = {171, 1},
|
||||
0xA5 = {172, 1},
|
||||
0xA6 = {173, 1},
|
||||
0xA7 = {174, 1},
|
||||
0xA8 = {175, 1},
|
||||
0xA9 = {176, 2},
|
||||
0xAA = {178, 1},
|
||||
0xAB = {179, 1},
|
||||
0xAC = {180, 1},
|
||||
0xAD = {181, 1},
|
||||
0xAE = {182, 1},
|
||||
0xAF = {183, 1},
|
||||
0xB0 = {184, 1},
|
||||
0xB1 = {185, 1},
|
||||
0xB2 = {186, 1},
|
||||
0xB3 = {187, 1},
|
||||
0xB4 = {188, 1},
|
||||
0xB5 = {189, 1},
|
||||
0xB6 = {190, 1},
|
||||
0xB7 = {191, 1},
|
||||
0xB8 = {192, 1},
|
||||
0xB9 = {193, 1},
|
||||
0xBA = {194, 1},
|
||||
0xBB = {195, 1},
|
||||
0xBC = {196, 1},
|
||||
0xBD = {197, 1},
|
||||
0xBE = {198, 1},
|
||||
0xBF = {199, 1},
|
||||
0xC0 = {200, 2},
|
||||
0xC1 = {202, 1},
|
||||
0xC2 = {203, 1},
|
||||
0xC3 = {204, 1},
|
||||
0xC4 = {205, 1},
|
||||
0xC5 = {206, 1},
|
||||
0xC6 = {207, 1},
|
||||
0xC7 = {208, 1},
|
||||
0xC8 = {209, 1},
|
||||
0xC9 = {210, 2},
|
||||
0xCA = {212, 1},
|
||||
0xCB = {213, 1},
|
||||
0xCC = {214, 1},
|
||||
0xCD = {215, 1},
|
||||
0xCE = {216, 1},
|
||||
0xCF = {217, 1},
|
||||
0xD0 = {218, 1},
|
||||
0xD1 = {219, 1},
|
||||
0xD2 = {220, 1},
|
||||
0xD3 = {221, 1},
|
||||
0xD4 = {222, 1},
|
||||
0xD5 = {223, 1},
|
||||
0xD6 = {224, 1},
|
||||
0xD7 = {225, 1},
|
||||
0xD8 = {226, 1},
|
||||
0xD9 = {227, 1},
|
||||
0xDA = {228, 1},
|
||||
0xDB = {229, 1},
|
||||
0xDC = {230, 1},
|
||||
0xDD = {231, 1},
|
||||
0xDE = {232, 1},
|
||||
0xDF = {233, 1},
|
||||
0xE0 = {234, 2},
|
||||
0xE1 = {236, 1},
|
||||
0xE2 = {237, 1},
|
||||
0xE3 = {238, 1},
|
||||
0xE4 = {239, 1},
|
||||
0xE5 = {240, 1},
|
||||
0xE6 = {241, 1},
|
||||
0xE7 = {242, 1},
|
||||
0xE8 = {243, 1},
|
||||
0xE9 = {244, 2},
|
||||
0xEA = {246, 1},
|
||||
0xEB = {247, 1},
|
||||
0xEC = {248, 1},
|
||||
0xED = {249, 1},
|
||||
0xEE = {250, 1},
|
||||
0xEF = {251, 1},
|
||||
0xF0 = {252, 1},
|
||||
0xF1 = {253, 1},
|
||||
0xF2 = {254, 1},
|
||||
0xF3 = {255, 1},
|
||||
0xF4 = {256, 1},
|
||||
0xF5 = {257, 1},
|
||||
0xF6 = {258, 1},
|
||||
0xF7 = {259, 1},
|
||||
0xF8 = {260, 1},
|
||||
0xF9 = {261, 1},
|
||||
0xFA = {262, 1},
|
||||
0xFB = {263, 1},
|
||||
0xFC = {264, 1},
|
||||
0xFD = {265, 1},
|
||||
0xFE = {266, 1},
|
||||
0xFF = {267, 1},
|
||||
}
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ package rexcode_mos65816
|
||||
// $A0 (LDA), $C0 (CMP), $E0 (SBC) to get the per-mnemonic base.
|
||||
|
||||
@(rodata)
|
||||
ENCODING_TABLE: [Mnemonic][]Encoding = #partial {
|
||||
ENCODING_TABLE:= #partial [Mnemonic][]Encoding{
|
||||
.INVALID = {},
|
||||
|
||||
// =========================================================================
|
||||
|
||||
@@ -152,10 +152,8 @@ encode_flags_literal :: proc(f: m.Encoding_Flags) -> string {
|
||||
emit_range_table :: proc(sb: ^strings.Builder, name: string, ranges: []Range) {
|
||||
fmt.sbprintfln(sb, "%s := [%d]Decode_Index{{", name, len(ranges))
|
||||
for r, i in ranges {
|
||||
if r.count == 0 {
|
||||
fmt.sbprintfln(sb, "\t/* %02X */ {{0, 0}},", i)
|
||||
} else {
|
||||
fmt.sbprintfln(sb, "\t/* %02X */ {{%d, %d}},", i, r.start, r.count)
|
||||
if r.count != 0 {
|
||||
fmt.sbprintfln(sb, "\t0x%02X = {{%d, %d}},", i, r.start, r.count)
|
||||
}
|
||||
}
|
||||
strings.write_string(sb, "}\n\n")
|
||||
|
||||
Reference in New Issue
Block a user