57 lines
1.4 KiB
C
57 lines
1.4 KiB
C
#pragma once
|
|
|
|
#include "Ident.h"
|
|
|
|
enum AsmInsType
|
|
{
|
|
ASMIT_ADC, ASMIT_AND, ASMIT_ASL, ASMIT_BCC, ASMIT_BCS, ASMIT_BEQ, ASMIT_BIT, ASMIT_BMI, ASMIT_BNE, ASMIT_BPL, ASMIT_BRK, ASMIT_BVC, ASMIT_BVS, ASMIT_CLC,
|
|
ASMIT_CLD, ASMIT_CLI, ASMIT_CLV, ASMIT_CMP, ASMIT_CPX, ASMIT_CPY, ASMIT_DEC, ASMIT_DEX, ASMIT_DEY, ASMIT_EOR, ASMIT_INC, ASMIT_INX, ASMIT_INY, ASMIT_JMP,
|
|
ASMIT_JSR, ASMIT_LDA, ASMIT_LDX, ASMIT_LDY, ASMIT_LSR, ASMIT_NOP, ASMIT_ORA, ASMIT_PHA, ASMIT_PHP, ASMIT_PLA, ASMIT_PLP, ASMIT_ROL, ASMIT_ROR, ASMIT_RTI,
|
|
ASMIT_RTS, ASMIT_SBC, ASMIT_SEC, ASMIT_SED, ASMIT_SEI, ASMIT_STA, ASMIT_STX, ASMIT_STY, ASMIT_TAX, ASMIT_TAY, ASMIT_TSX, ASMIT_TXA, ASMIT_TXS, ASMIT_TYA,
|
|
ASMIT_INV, ASMIT_BYTE,
|
|
|
|
NUM_ASM_INS_TYPES
|
|
};
|
|
|
|
|
|
enum AsmInsMode
|
|
{
|
|
ASMIM_IMPLIED,
|
|
ASMIM_IMMEDIATE,
|
|
ASMIM_ZERO_PAGE,
|
|
ASMIM_ZERO_PAGE_X,
|
|
ASMIM_ZERO_PAGE_Y,
|
|
ASMIM_ABSOLUTE,
|
|
ASMIM_ABSOLUTE_X,
|
|
ASMIM_ABSOLUTE_Y,
|
|
ASMIM_INDIRECT,
|
|
ASMIM_INDIRECT_X,
|
|
ASMIM_INDIRECT_Y,
|
|
ASMIM_RELATIVE,
|
|
|
|
NUM_ASM_INS_MODES,
|
|
|
|
ASMIM_IMMEDIATE_ADDRESS
|
|
};
|
|
|
|
struct AsmInsData
|
|
{
|
|
AsmInsType mType;
|
|
AsmInsMode mMode;
|
|
};
|
|
|
|
|
|
extern AsmInsData DecInsData[256];
|
|
|
|
extern short AsmInsOpcodes[NUM_ASM_INS_TYPES][NUM_ASM_INS_MODES];
|
|
|
|
extern const char* AsmInstructionNames[NUM_ASM_INS_TYPES];
|
|
|
|
AsmInsType FindAsmInstruction(const char * ins);
|
|
|
|
bool HasAsmInstructionMode(AsmInsType type, AsmInsMode mode);
|
|
|
|
int AsmInsSize(AsmInsType type, AsmInsMode mode);
|
|
|
|
void InitAssembler(void);
|