Files
2021-10-31 21:20:46 +02:00

299 lines
14 KiB
C++

/*
* Interactive disassembler (IDA).
* Copyright (c) 1990-2021 Hex-Rays
* ALL RIGHTS RESERVED.
*
*/
#ifndef __INSTRS_HPP
#define __INSTRS_HPP
extern const instruc_t Instructions[];
enum nameNum ENUM_SIZE(uint16)
{
TMS_null = 0, // Unknown Operation
TMS_abs, // Absolute value of Acc
TMS_adcb, // Add ACCB to Acc With Carry
TMS_add, // Add to Acc
TMS_addb, // Add ACCB to Acc
TMS_addc, // Add to Acc With Carry
TMS_adds, // Add to Acc With Sign-Extension Suppressed
TMS_addt, // Add to Acc With Shift Specified by TREG1
TMS_adrk, // Add to Aux Register With Short Immediate
TMS_and, // AND With Acc
TMS_andb, // AND ACCD With Acc
TMS_apac, // Add P Register to Acc
TMS_apl, // AND Data Memory Value With DBMR
TMS_apl2, // AND Data Memory Value With Long Constant
TMS_b, // Branch Unconditionally
TMS_bacc, // Branch to Location (Acc)
TMS_baccd, // Branch to Location (Acc) Delayed
TMS_banz, // Branch on Aux Register Not Zero
TMS_banzd, // Branch on Aux Register Not Zero Delayed
TMS_bcnd, // Branch Conditionally
TMS_bcndd, // Branch Conditionally Delayed
TMS_bd, // Branch Unconditionally Delayed
TMS_bit, // Test Bit
TMS_bitt, // Test Bit Specified by TREG2
TMS_bldd, // Block Move From Data Memory to Data Memory
TMS_bldp, // Block Move From Data Memory to Program Memory
TMS_blpd, // Block Move From Program Memory to Data Memory
TMS_bsar, // Barrel Shift
TMS_cala, // Call Subroutine at (Acc)
TMS_calad, // Call Subroutine at (Acc) Delayed
TMS_call, // Call Unconditionally
TMS_calld, // Call Unconditionally Delayed
TMS_cc, // Call Conditionally
TMS_ccd, // Call Conditionally Delayed
TMS_clrc, // Clear Control Bit
TMS_cmpl, // Complement Acc
TMS_cmpr, // Compare Aux Register With ARCR
TMS_cpl, // Compare DBMR With Data Value
TMS_cpl2, // Compare Long Immediate With Data Value
TMS_crgt, // Test for Acc Greater Than ACCB
TMS_crlt, // Test for Acc Smaller Than ACCB
TMS_dmov, // Data Move in Data Memory
TMS_estop, // Emulator Stop
TMS_exar, // Exchange ACCB With Acc
TMS_idle, // Idle Until Interrupt
TMS_idle2, // Idle Until Interrupt - Low Power Mode
TMS_in, // Input Data From Port
TMS_intr, // Soft Interrupt
TMS_lacb, // Load Acc With ACCB
TMS_lacc, // Load Acc With Shift
TMS_lacl, // Load Low Acc and Clear High Acc
TMS_lact, // Load Acc With Shift Specified by TREG1
TMS_lamm, // Load Acc With Memory-Mapped Register
TMS_lar, // Load Aux Register
TMS_ldp, // Load Data Memory Pointer
TMS_lmmr, // Load Memory-Mapped Register
TMS_lph, // Load Product High Register
TMS_lst, // Load Status Register
TMS_lt, // Load TREG0
TMS_lta, // Load TREG0 and Accumulate Previous Product
TMS_ltd, // Load TREG0,Accumulate Previous Product and Move Data
TMS_ltp, // Load TREG0 and Store P -> Acc
TMS_lts, // Load TREG0 and Subtract Previous Product
TMS_mac, // Multiply and Accumulate
TMS_macd, // Multiply and Accumulate With Data Move
TMS_madd, // Multiply and Accumulate With Data Move and Dynamic Addressing
TMS_mads, // Multiply and Accumulate With Dynamic Addressing
TMS_mar, // Modify Aux Register
TMS_mpy, // Multiply
TMS_mpya, // Multiply and Accumulate Previous Product
TMS_mpys, // Multiply and Subtract Previous Product
TMS_mpyu, // Multiply Unsigned
TMS_neg, // Negate Acc
TMS_nmi, // Nonmaskable Interrupt
TMS_nop, // No Operation
TMS_norm, // Normalize Contents of Acc
TMS_opl, // OR With DBMS
TMS_opl2, // OR With Long Immediate
TMS_or, // OR With Acc
TMS_orb, // OR ACCB With Accumulator
TMS_out, // Out Data to Port
TMS_pac, // Load Acc <- P
TMS_pop, // Pop Top of Stack to Low Acc
TMS_popd, // Pop Top of Stack to Data Memory
TMS_pshd, // Push Data Memory Value Onto Stack
TMS_push, // Push Low Acc Onto Stack
TMS_ret, // Return From Subroutine
TMS_retc, // Return Conditionally
TMS_retcd, // Return Conditionally Delayed
TMS_retd, // Return From Subroutine Delayed
TMS_rete, // Enable Interrupts and Return From Interrupt
TMS_reti, // Return From Interrupt
TMS_rol, // Rotate Acc Left
TMS_rolb, // Rotate ACCB and Acc Left
TMS_ror, // Rotate Acc Right
TMS_rorb, // Rotate ACCB and Acc Right
TMS_rpt, // Repeat Next Instruction
TMS_rptb, // Repeat Block
TMS_rptz, // Repeat Preceded by Clearing Acc and P
TMS_sacb, // Store Acc in ACCB
TMS_sach, // Store High Acc With Shift
TMS_sacl, // Store Low Acc With Shift
TMS_samm, // Store Acc in Memory-Mapped Register
TMS_sar, // Store Aux Register
TMS_sath, // Barrel Shift Acc as Specified by TREG1(4)
TMS_satl, // Barrel Shift Acc as Specified by TREG1(3-0)
TMS_sbb, // Subtract ACCB From Acc
TMS_sbbb, // Subtract ACCB From Acc With Borrow
TMS_sbrk, // Subtract From Aux Register Short Immediate
TMS_setc, // Set Control Bit
TMS_sfl, // Shift Acc Left
TMS_sflb, // Shift ACCB and Acc Left
TMS_sfr, // Shift Acc Right
TMS_sfrb, // Shift ACCB and Acc Right
TMS_smmr, // Store Memory-Mapped Register
TMS_spac, // Subtract P From Acc
TMS_sph, // Store High P Register
TMS_spl, // Store Low P Register
TMS_splk, // Store Parallel Long Immediate
TMS_spm, // Store ACCB and Acc Right
TMS_sqra, // Square and Accumulate Previous Product
TMS_sqrs, // Square and Subtract Previous Product
TMS_sst, // Store Status Register
TMS_sub, // Subtract From Acc
TMS_subb, // Subtract From Acc With Borrow
TMS_subc, // Conditional Subtract
TMS_subs, // Subtract From Acc With Sign-Extension Suppressed
TMS_subt, // Subtract From Acc With Shift Specified by TREG1
TMS_tblr, // Table Read
TMS_tblw, // Table Write
TMS_trap, // Software Interrupt
TMS_xc, // Execute Conditionally
TMS_xor, // Exclusive-OR With Acc
TMS_xorb, // Exclusive-OR of ACCB With Acc
TMS_xpl, // Exclusive-OR Data Memory Value
TMS_xpl2, // Exclusive-OR Data Memory Value
TMS_zalr, // Zero Low Acc Load High Acc With Rounding
TMS_zap, // Zero Acc and P
TMS_zpr, // Zero P Register
//
// TMS320C2x instructions
//
TMS2_abs, // Absolute value of accumulator
TMS2_add, // Add to accumulator with shift
TMS2_addc, // Add to accumulator with carry
TMS2_addh, // Add to high accumulator
TMS2_addk, // Add to accumulator short immediate
TMS2_adds, // Add to low accumulator with sign extension suppressed
TMS2_addt, // Add to accumulator with shift specified by T register
TMS2_adlk, // Add to accumulator long immediate with shift
TMS2_adrk, // Add to auxiliary register short immediate
TMS2_and, // And with accumulator
TMS2_andk, // And immediate with accumulator with shift
TMS2_apac, // App P register to accumulator
TMS2_b, // Branch unconditionally
TMS2_bacc, // Branch to address specified by accumulator
TMS2_banz, // Bnrach on auxiliary register not zero
TMS2_bbnz, // Branch if tc bit != 0
TMS2_bbz, // Branch if tc bit = 0
TMS2_bc, // Branch on carry
TMS2_bgez, // Branch if accumulator >= 0
TMS2_bgz, // Branch if accumulator > 0
TMS2_bioz, // Branch on i/o status = 0
TMS2_bit, // Test bit
TMS2_bitt, // Test bit specifed by T register
TMS2_blez, // Branch if accumulator <= 0
TMS2_blkd, // Block move from data memory to data memory
TMS2_blkp, // Block move from program memory to data memory
TMS2_blz, // Branch if accumulator < 0
TMS2_bnc, // Branch on no carry
TMS2_bnv, // Branch if no overflow
TMS2_bnz, // Branch if accumulator != 0
TMS2_bv, // Branch on overflow
TMS2_bz, // Branch if accumulator = 0
TMS2_cala, // Call subroutine indirect
TMS2_call, // Call subroutine
TMS2_cmpl, // Complement accumulator
TMS2_cmpr, // Compare auxiliary register with auxiliary register ar0
TMS2_cnfd, // Configure block as data memory
TMS2_cnfp, // Configure block as program memory
TMS2_conf, // Configure block as data/program memory
TMS2_dint, // Disable interrupt
TMS2_dmov, // Data move in data memory
TMS2_eint, // Enable interrupt
TMS2_fort, // Format serial port registers
TMS2_idle, // Idle until interrupt
TMS2_in, // Input data from port
TMS2_lac, // Load accumulator with shift
TMS2_lack, // Load accumulator short immediate
TMS2_lact, // Load accumulator with shift specified by T register
TMS2_lalk, // Load accumulator long immediate with shift
TMS2_lar, // Load auxiliary register
TMS2_lark, // Load auxiliary register short immediate
TMS2_larp, // Load auxiliary register pointer
TMS2_ldp, // Load data memory page pointer
TMS2_ldpk, // Load data memory page pointer immediate
TMS2_lph, // Load high P register
TMS2_lrlk, // Load auxiliary register long immediate
TMS2_lst, // Load status register ST0
TMS2_lst1, // Load status register ST1
TMS2_lt, // Load T register
TMS2_lta, // Load T register and accumulate previous product
TMS2_ltd, // Load T register, accumulate previous product and move data
TMS2_ltp, // Load T register and store P register in accumulator
TMS2_lts, // Load T register and subtract previous product
TMS2_mac, // Multiply and accumulate
TMS2_macd, // Multiply and accumulate with data move
TMS2_mar, // Modify auxiliary register
TMS2_mpy, // Multiply (with T register, store product in P register)
TMS2_mpya, // Multiply and accumulate previous product
TMS2_mpyk, // Multiply immediate
TMS2_mpys, // Multiply and subtract previous product
TMS2_mpyu, // Multiply unsigned
TMS2_neg, // Negate accumulator
TMS2_nop, // No operation
TMS2_norm, // Normalize contents of accumulator
TMS2_or, // Or with accumulator
TMS2_ork, // Or immediate with accumulator with shift
TMS2_out, // Output data to port
TMS2_pac, // Load accumulator with P register
TMS2_pop, // Pop top of stack to low accumulator
TMS2_popd, // Pop top of stack to data memory
TMS2_pshd, // Push data memory value onto stack
TMS2_push, // Push low accumulator onto stack
TMS2_rc, // Reset carry bit
TMS2_ret, // Return from subroutine
TMS2_rfsm, // Reset serial port frame synchronization mode
TMS2_rhm, // Reset hold mode
TMS2_rol, // Rotate accumulator left
TMS2_ror, // Rotate acuumulator right
TMS2_rovm, // Reset overflow mode
TMS2_rpt, // Repeat instruction as specified by data memory value
TMS2_rptk, // Repeat instruction as specified by immediate value
TMS2_rsxm, // Reset sign extension mode
TMS2_rtc, // Reset test/control flag
TMS2_rtxm, // Reset serial port transmit mode
TMS2_rxf, // Reset external flag
TMS2_sach, // Store high accumulator with shift
TMS2_sacl, // Store low accumulator with shift
TMS2_sar, // Store auxiliary register
TMS2_sblk, // Subtract from accumulator long immediate with shift
TMS2_sbrk, // Subtract from auxiliary register short immediate
TMS2_sc, // Set carry bit
TMS2_sfl, // Shift accumulator left
TMS2_sfr, // Shift accumulator right
TMS2_sfsm, // Set serial port frame synchronization mode
TMS2_shm, // Set hold mode
TMS2_sovm, // Set overflow mode
TMS2_spac, // Subtract P register from accumulator
TMS2_sph, // Store high P register
TMS2_spl, // Store low P register
TMS2_spm, // Set P register output shift mode
TMS2_sqra, // Square and accumulate
TMS2_sqrs, // Square and subtract previous product
TMS2_sst, // Store status register ST0
TMS2_sst1, // Store status register ST1
TMS2_ssxm, // Set sign extension mode
TMS2_stc, // Set test/control flag
TMS2_stxm, // Set serial port transmit mode
TMS2_sub, // Subtract from accumulator with shift
TMS2_subb, // Subtract from accumulator with borrow
TMS2_subc, // Conditional subtract
TMS2_subh, // Subtract from high accumulator
TMS2_subk, // Subtract from accumulator shoft immediate
TMS2_subs, // Subtract from low accumulator with sign extension suppressed
TMS2_subt, // Subtract from accumulator with shift specified by T register
TMS2_sxf, // Set external flag
TMS2_tblr, // Table read
TMS2_tblw, // Table write
TMS2_trap, // Software interrupt
TMS2_xor, // Exclusive or with accumulator
TMS2_xork, // Exclusive or immediate with accumulator with shift
TMS2_zac, // Zero accumulator
TMS2_zalh, // Zero low accumulator and load high accumulator
TMS2_zalr, // Zero low accumulator and load high accumulator with rounding
TMS2_zals, // Zero low accumulator and load high accumulator with sign extension suppressed
TMS_last,
};
#endif