summaryrefslogtreecommitdiff
path: root/disasm.h
diff options
context:
space:
mode:
authormrb0nk500 <b0nk@b0nk.xyz>2020-11-20 15:10:24 -0500
committermrb0nk500 <b0nk@b0nk.xyz>2020-11-20 15:10:24 -0500
commit83ce1151ee1f06ae6b1c5c1018cc2489494e5ea4 (patch)
treeba4edade46c57ec5119d01ab8a7ad9f7943c6804 /disasm.h
parentdc7ebb9d424bb39d59f09b8498746beb871c46f4 (diff)
- Implemented support for Sux's base extension.
This is the biggest milestone I've reached for this project, since the base extension changes alot about what Sux can do by default, and now makes it a viable instruction set for modern day use, when compared with other instruction sets.
Diffstat (limited to 'disasm.h')
-rw-r--r--disasm.h168
1 files changed, 167 insertions, 1 deletions
diff --git a/disasm.h b/disasm.h
index e56007f..6f978ce 100644
--- a/disasm.h
+++ b/disasm.h
@@ -102,7 +102,7 @@ static const char *opname[0x100] = {
[XOR_B ] = "XOR B",
[CMP_B ] = "CMP B",
[DEB_IMP ] = "DEB",
- [TXS_IMM ] = "TXS #",
+ [TXS_IMP ] = "TXS",
[STY_IN ] = "STY ind",
[PLA_IMP ] = "PLA",
[BCC_REL ] = "BCC rel",
@@ -169,3 +169,169 @@ static const char *opname[0x100] = {
[CPB_IY ] = "CPB indy",
[PLX_IMP ] = "PLX"
};
+
+static const char *ext_opname[0x100] = {
+ [LEA_AY ] = "LEA a, y",
+ [ADD_IMM] = "ADD #",
+ [LEA_Z ] = "LEA zm",
+ [CPE_IMM] = "CPE #",
+ [CLZ_Z ] = "CLZ zm",
+ [ADD_Z ] = "ADD zm",
+ [STB_E ] = "STB (E)",
+ [CPE_Z ] = "CPE zm",
+ [LNG_IMM] = "LNG #",
+ [LNG_E ] = "LNG (E)",
+ [JMP_E ] = "JMP (E)",
+ [ADC_E ] = "ADC (E)",
+ [ROR_E ] = "ROR (E)",
+ [LEA_AB ] = "LEA a",
+ [CLZ_AB ] = "CLZ a",
+ [ADD_AB ] = "ADD a",
+ [LEA_ZY ] = "LEA zm, y",
+ [CPE_AB ] = "CPE a",
+ [CLZ_E ] = "CLZ (E)",
+ [ADD_E ] = "ADD (E)",
+ [LDX_E ] = "LDX (E)",
+ [SNG_E ] = "SNG (E)",
+ [PEA_AY ] = "PEA a, y",
+ [SUB_IMM] = "SUB #",
+ [PEA_Z ] = "PEA zm",
+ [CLO_Z ] = "CLO zm",
+ [SUB_Z ] = "SUB zm",
+ [STX_E ] = "STX (E)",
+ [ICE_Z ] = "ICE (E)",
+ [LPO_IMM] = "LPO #",
+ [LPO_E ] = "LPO (E)",
+ [JSR_E ] = "JSR (E)",
+ [SBC_E ] = "SBC (E)",
+ [MUL_E ] = "MUL (E)",
+ [PEA_AB ] = "PEA a",
+ [CLO_AB ] = "CLO a",
+ [SUB_AB ] = "SUB a",
+ [PEA_ZY ] = "PEA zm, y",
+ [ICE_AB ] = "ICE a",
+ [CLO_E ] = "CLO (E)",
+ [SUB_E ] = "SUB (E)",
+ [CPB_E ] = "CPB (E)",
+ [ICE_E ] = "ICE (E)",
+ [SPO_E ] = "SPO (E)",
+ [LDS_IMM] = "LDS #",
+ [LEA_AI ] = "LEA (a)",
+ [LDS_Z ] = "LDS zm",
+ [ADE_IMM] = "ADE #",
+ [LEA_IN ] = "LEA (zm)",
+ [BIT_Z ] = "BIT zm",
+ [ADE_Z ] = "ADE zm",
+ [CPX_E ] = "CPX (E)",
+ [LLM_Z ] = "LLM zm",
+ [LCS_IMM] = "LCS #",
+ [LCS_E ] = "LCS (E)",
+ [LDS_AB ] = "LDS a",
+ [AND_E ] = "AND (E)",
+ [DIV_E ] = "DIV (E)",
+ [LEA_AX ] = "LEA a, x",
+ [LDS_E ] = "LDS (E)",
+ [BIT_AB ] = "BIT a",
+ [ADE_AB ] = "ADE a",
+ [LEA_ZX ] = "LEA zm, x",
+ [LLM_AB ] = "LLM a",
+ [BIT_E ] = "BIT (E)",
+ [CPY_E ] = "CPY (E)",
+ [LLM_E ] = "LLM (E)",
+ [SCS_E ] = "SCS (E)",
+ [SCO_IMM] = "SCO #",
+ [PEA_AI ] = "PEA (a)",
+ [SCO_Z ] = "SCO zm",
+ [SBE_IMM] = "SBE #",
+ [PEA_IN ] = "PEA (zm)",
+ [SBE_Z ] = "SBE zm",
+ [PHE_IMP] = "PHE",
+ [LRM_Z ] = "LRM zm",
+ [LCC_IMM] = "LCC #",
+ [LCC_E ] = "LCC (E)",
+ [SCO_AB ] = "SCO a",
+ [ORA_E ] = "ORA (E)",
+ [ASR_E ] = "ASR (E)",
+ [PEA_AX ] = "PEA a, x",
+ [SCO_E ] = "SCO (E)",
+ [SBE_AB ] = "SBE a",
+ [PEA_ZX ] = "PEA zm, x",
+ [LRM_AB ] = "LRM a",
+ [PLE_IMP] = "PLE",
+ [LRM_E ] = "LRM (E)",
+ [SCC_E ] = "SCC (E)",
+ [ECO_IMM] = "ECO #",
+ [DEC_E ] = "DEC (E)",
+ [LEA_AIY] = "LEA (a), y",
+ [ECO_Z ] = "ECO zm",
+ [ADS_IMM] = "ADS #",
+ [LEA_IY ] = "LEA (zm), y",
+ [ADS_Z ] = "ADS zm",
+ [DEE_IMP] = "DEE",
+ [RLM_Z ] = "RLM zm",
+ [LEQ_IMM] = "LEQ #",
+ [LEQ_E ] = "LEQ (E)",
+ [ECO_AB ] = "ECO a",
+ [XOR_E ] = "XOR (E)",
+ [CMP_E ] = "CMP (E)",
+ [LEA_AIX] = "LEA (a, x)",
+ [ECO_E ] = "ECO (E)",
+ [ADS_AB ] = "ADS a",
+ [LEA_IX ] = "LEA (zm, x)",
+ [RLM_AB ] = "RLM a",
+ [ADS_E ] = "ADS (E)",
+ [INE_IMP] = "INE",
+ [RLM_E ] = "RLM (E)",
+ [SEQ_E ] = "SEQ (E)",
+ [INC_E ] = "INC (E)",
+ [PEA_AIY] = "PEA (a), y",
+ [STS_Z ] = "STS zm",
+ [SBS_IMM] = "SBS #",
+ [PEA_IY ] = "PEA (zm), y",
+ [SBS_Z ] = "SBS zm",
+ [DES_IMP] = "DES",
+ [RRM_Z ] = "RRM zm",
+ [LNE_IMM] = "LNE #",
+ [LNE_E ] = "LNE (E)",
+ [STS_AB ] = "STS a",
+ [LSL_E ] = "LSL (E)",
+ [LDY_E ] = "LDY (E)",
+ [PEA_AIX] = "PEA (a, x)",
+ [STS_E ] = "STS (E)",
+ [SBS_AB ] = "SBS a",
+ [PEA_IX ] = "PEA (zm, x)",
+ [RRM_AB ] = "RRM a",
+ [SBS_E ] = "SBS (E)",
+ [INS_IMP] = "INS",
+ [RRM_E ] = "RRM (E)",
+ [REP_REL] = "REP rel",
+ [SNE_E ] = "SNE (E)",
+ [STY_E ] = "STY (E)",
+ [STE_Z ] = "STE zm",
+ [NOT_A ] = "NOT A",
+ [NOT_Z ] = "NOT zm",
+ [MMV_IMP] = "MMV",
+ [ARM_Z ] = "ARM zm",
+ [REQ_REL] = "REQ rel",
+ [STE_AB ] = "STE a",
+ [LSR_E ] = "LSR (E)",
+ [LDA_E ] = "LDA (E)",
+ [NOT_AB ] = "NOT a",
+ [ARM_AB ] = "ARM a",
+ [NOT_E ] = "NOT (E)",
+ [ARM_E ] = "ARM (E)",
+ [RNE_REL] = "RNE rel",
+ [STA_E ] = "STA (E)",
+ [STZ_Z ] = "STZ zm",
+ [SWP_A ] = "SWP A",
+ [SWP_Z ] = "SWP zm",
+ [PCN_Z ] = "PCN zm",
+ [STZ_AB ] = "STZ a",
+ [ROL_E ] = "ROL (E)",
+ [LDB_E ] = "LDB (E)",
+ [STZ_E ] = "STZ (E)",
+ [SWP_AB ] = "SWP a",
+ [PCN_AB ] = "PCN a",
+ [SWP_E ] = "SWP (E)",
+ [PCN_E ] = "PCN (E)"
+};