Line 11... |
Line 11... |
// symbol table access and the final output object file together
|
// symbol table access and the final output object file together
|
// with its necessary relocations. Yes, linking is done, but as
|
// with its necessary relocations. Yes, linking is done, but as
|
// part of the assembler and not part of a separate linker.
|
// part of the assembler and not part of a separate linker.
|
//
|
//
|
// Creator: Dan Gisselquist, Ph.D.
|
// Creator: Dan Gisselquist, Ph.D.
|
// Gisselquist Tecnology, LLC
|
// Gisselquist Technology, LLC
|
//
|
//
|
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
//
|
//
|
// Copyright (C) 2015, Gisselquist Technology, LLC
|
// Copyright (C) 2015, Gisselquist Technology, LLC
|
//
|
//
|
Line 55... |
Line 55... |
// TST OPCND
|
// TST OPCND
|
// Dual operand instructions that take conditions
|
// Dual operand instructions that take conditions
|
OP_CMP, OP_TST, OP_MOV, OP_LDIHI, OP_LDILO, OP_MPYU, OP_MPYS, OP_ROL,
|
OP_CMP, OP_TST, OP_MOV, OP_LDIHI, OP_LDILO, OP_MPYU, OP_MPYS, OP_ROL,
|
OP_SUB, OP_AND, OP_ADD, OP_OR, OP_XOR,
|
OP_SUB, OP_AND, OP_ADD, OP_OR, OP_XOR,
|
OP_LSL, OP_ASR, OP_LSR,
|
OP_LSL, OP_ASR, OP_LSR,
|
|
// New bit-wise operations
|
|
OP_BREV, OP_POPC,
|
|
// New divide instruction
|
|
OP_DIVU, OP_DIVS,
|
|
// New floating point instructions
|
|
OP_FPADD, OP_FPSUB, OP_FPMUL, OP_FPDIV, OP_FPCVT, OP_FPINT,
|
// Memory operands/operators
|
// Memory operands/operators
|
OP_LOD, OP_STO,
|
OP_LOD, OP_STO,
|
// Dual operand instructions that do not take conditions
|
// Dual operand instructions that do not take conditions
|
OP_LDI,
|
OP_LDI,
|
// Single operand instructions that can take conditions
|
// Single operand instructions that can take conditions
|
OP_CLRF, OP_JMP, OP_LJMP, OP_NOT,
|
OP_CLRF, OP_JMP, OP_LJMP, OP_NOT,
|
// Branch operands
|
// Branch operands
|
OP_BRA, OP_BZ, OP_BNZ, OP_BGE, OP_BGT, OP_BLT, OP_BRC, OP_BRV,
|
OP_BRA, OP_BLT, OP_BZ, OP_BNZ, OP_BGT, OP_BGE, OP_BRC, OP_BRV,
|
// Single operand instructions that have no explicit conditions
|
// Single operand instructions that have no explicit conditions
|
OP_CLR, OP_TRAP, OP_NEG,
|
OP_CLR, OP_TRAP, OP_NEG,
|
// BAREOPs that can have conditions
|
// BAREOPs that can have conditions
|
OP_HALT, OP_RTU, OP_BUSY, OP_RETN,
|
OP_HALT, OP_RTU, OP_BUSY, OP_RETN,
|
// BAREOPs without conditions
|
// BAREOPs without conditions
|
OP_BREAK, OP_NOOP,
|
OP_BREAK, OP_NOOP, OP_LOCK,
|
// Error condition--undefined operand
|
// Error condition--undefined operand
|
OP_NONE
|
OP_NONE
|
} LEXOPCODE;
|
} LEXOPCODE;
|
|
|
#define DEFAULT_LINE 0x4e000000
|
#define DEFAULT_LINE 0x76000000
|
|
|
class ASMLINE {
|
class ASMLINE {
|
public:
|
public:
|
char m_state;
|
char m_state;
|
int m_lineno;
|
int m_lineno;
|