148 lines
6.2 KiB
C++
148 lines
6.2 KiB
C++
|
|
#ifndef __INSTRS_HPP
|
|
#define __INSTRS_HPP
|
|
|
|
extern const instruc_t Instructions[];
|
|
|
|
enum nameNum
|
|
{
|
|
DSP56_null = 0, // Unknown Operation
|
|
|
|
DSP56_abs, // Absolute Value
|
|
DSP56_adc, // Add Long with Carry
|
|
DSP56_add, // Addition
|
|
DSP56_addl, // Shift Left and Add
|
|
DSP56_addr, // Shift Right and Add
|
|
DSP56_and, // Logical AND
|
|
DSP56_andi, // AND Immediate to Control Register
|
|
DSP56_asl, // Arithmetic Shift Left
|
|
DSP56_asl4, // Arithmetic Shift Left 4
|
|
DSP56_asr, // Arithmetic Shift Right
|
|
DSP56_asr4, // Arithmetic Shift Right 4
|
|
DSP56_asr16, // Arithmetic Shift Right 16
|
|
DSP56_bfchg, // Test Bit Field and Change
|
|
DSP56_bfclr, // Clear Bit Field
|
|
DSP56_bfset, // Set Bit Field
|
|
DSP56_bftsth, // Test Bit Field High
|
|
DSP56_bftstl, // Test Bit Field Low
|
|
DSP56_bcc, // Branch Conditionaly
|
|
DSP56_bchg, // Bit Test and Change
|
|
DSP56_bclr, // Bit Test and Clear
|
|
DSP56_bra, // Branch Always
|
|
DSP56_brclr, // Branch if Bit Clear
|
|
DSP56_brkcc, // Exit Current DO Loop Conditionally
|
|
DSP56_brset, // Branch if Bit Set
|
|
DSP56_bscc, // Branch to Subroutine Conditionaly
|
|
DSP56_bsclr, // Branch to Subroutine if Bit Clear
|
|
DSP56_bset, // Bit Test and Set
|
|
DSP56_bsr, // Branch to Subroutine
|
|
DSP56_bsset, // Branch to Subroutine if Bit Set
|
|
DSP56_btst, // Bit Test on Memory and Registers
|
|
DSP56_chkaau, // Check address ALU result
|
|
DSP56_clb, // Count Leading Bits
|
|
DSP56_clr, // Clear an Operand
|
|
DSP56_clr24, // Clear 24 MS-bits of Accumulator
|
|
DSP56_cmp, // Compare
|
|
DSP56_cmpm, // Compare Magnitude
|
|
DSP56_cmpu, // Compare Unsigned
|
|
DSP56_debug, // Enter Debug Mode
|
|
DSP56_debugcc, // Enter Debug Mode Conditionally
|
|
DSP56_dec, // Decrement by One
|
|
DSP56_dec24, // Decrement 24 MS-bit of Accumulator
|
|
DSP56_div, // Divide Iteration
|
|
DSP56_dmac, // Double-Precision Multiply-Accumulate With Right Shift
|
|
DSP56_do, // Start Hardware Loop
|
|
DSP56_do_f, // Start Infinite Loop
|
|
DSP56_dor, // Start PC-Relative Hardware Loop
|
|
DSP56_dor_f, // Start PC-Relative Infinite Loop
|
|
DSP56_enddo, // Exit from Hardware Loop
|
|
DSP56_eor, // Logical Exclusive OR
|
|
DSP56_extract, // Extract Bit Field
|
|
DSP56_extractu, // Extract Unsigned Bit Field
|
|
DSP56_ext, // Sign Extend Accumulator
|
|
DSP56_ill, // Illegal Instruction
|
|
DSP56_imac, // Integer Multiply-Accumulate
|
|
DSP56_impy, // Integer Multiply
|
|
DSP56_inc, // Increment by One
|
|
DSP56_inc24, // Increment 24 MS-bit of Accumulator
|
|
DSP56_insert, // Insert Bit Field
|
|
DSP56_jcc, // Jump Conditionally
|
|
DSP56_jclr, // Jump if Bit Clear
|
|
DSP56_jmp, // Jump
|
|
DSP56_jscc, // Jump to Subroutine Conditionally
|
|
DSP56_jsclr, // Jump to Subroutine if Bit Clear
|
|
DSP56_jset, // Jump if Bit Set
|
|
DSP56_jsr, // Jump to Subroutine
|
|
DSP56_jsset, // Jump to Subroutine if Bit Set
|
|
DSP56_lra, // Load PC-Reliative Address
|
|
DSP56_lsl, // Logical Shift Left
|
|
DSP56_lsr, // Logical Shift Right
|
|
DSP56_lua, // Load Updated Address
|
|
DSP56_lea, // Load Updated Address
|
|
DSP56_mac, // Signed Multiply-Accumulate
|
|
DSP56_maci, // Signed Multiply-Accumulate With Immediate Operand
|
|
DSP56_mac_s_u, // Mixed Multiply-Accumulate
|
|
DSP56_macr, // Signed Multiply-Accumulate and Round
|
|
DSP56_macri, // Signed Multiply-Accumulate and Round With Immediate Operand
|
|
DSP56_max, // Transfer by Signed Value
|
|
DSP56_maxm, // Transfer by Magnitude
|
|
DSP56_merge, // Merge Two Half Words
|
|
DSP56_move, // Move Data
|
|
DSP56_movec, // Move Control Register
|
|
DSP56_movei, // Move Immediate Short
|
|
DSP56_movem, // Move Program Memory
|
|
DSP56_movep, // Move Peripheral Data
|
|
DSP56_moves, // Move Absolute Short
|
|
DSP56_mpy, // Signed Multiply
|
|
DSP56_mpyi, // Signed Multiply With Immediate Operand
|
|
DSP56_mpy_s_u, // Mixed Multiply
|
|
DSP56_mpyr, // Signed Multiply and Round
|
|
DSP56_mpyri, // Signed Multiply and Round With Immediate Operand
|
|
DSP56_neg, // Negate Accumulator
|
|
DSP56_negc, // Negate Accumulator
|
|
DSP56_nop, // No Operation
|
|
DSP56_norm, // Norm Accumulator Iteration
|
|
DSP56_normf, // Fast Accumulator Normalization
|
|
DSP56_not, // Logical Complement
|
|
DSP56_or, // Logical Inclusive OR
|
|
DSP56_ori, // OR Immediate to Control Register
|
|
DSP56_pflush, // Program Cache Flush
|
|
DSP56_pflushun, // Program Cache Flush Unlocked Sectors
|
|
DSP56_pfree, // Program Cache Global Unlock
|
|
DSP56_plock, // Lock Instruction Cache Sector
|
|
DSP56_plockr, // Lock Instruction Cache Relative Sector
|
|
DSP56_punlock, // Unlock Instruction Cache Sector
|
|
DSP56_punlockr, // Unlock Instruction Cache Relative Sector
|
|
DSP56_rep, // Repeat Next Instruction
|
|
DSP56_repcc, // Repeat Next Instruction
|
|
DSP56_reset, // Reset On-Chip Peripheral Devices
|
|
DSP56_rnd, // Round Accumulator
|
|
DSP56_rol, // Rotate Left
|
|
DSP56_ror, // Rotate Right
|
|
DSP56_rti, // Return from Interrupt
|
|
DSP56_rts, // Return from Subroutine
|
|
DSP56_sbc, // Subtract Long with Carry
|
|
DSP56_stop, // Stop Processing (Low-Power Standby)
|
|
DSP56_sub, // Subtract
|
|
DSP56_subl, // Shift Left and Subtract
|
|
DSP56_subr, // Shift Right and Subtract
|
|
DSP56_swap, // Swap Accumulator Words
|
|
DSP56_tcc, // Transfer Conditionally
|
|
DSP56_tfr, // Transfer Data ALU Register
|
|
DSP56_tfr2, // Transfer Data ALU Register
|
|
DSP56_tfr3, // Transfer Data ALU Register
|
|
DSP56_trap, // Software Interrupt
|
|
DSP56_trapcc, // Software Interrupt Conditionally
|
|
DSP56_tst, // Test an Operand
|
|
DSP56_tst2, // Test an Operand
|
|
DSP56_vsl, // Viterbi Shift Left
|
|
DSP56_wait, // Wait for Interrupt or DMA Request (Low-Power Standby)
|
|
DSP56_zero, // Zero Extend Accumulator
|
|
DSP56_swi, // Software Interrupt (only for 56000)
|
|
DSP56_pmov, // Pseudo insn
|
|
DSP56_last,
|
|
|
|
};
|
|
|
|
#endif
|