/* * 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) { TMS320C54_null = 0, // Unknown Operation // ARITHMETIC OPERATIONS // ADD INSTRUCTIONS TMS320C54_add1, // Add to Accumulator TMS320C54_add2, // Add to Accumulator TMS320C54_add3, // Add to Accumulator TMS320C54_addc, // Add to Accumulator With Carry TMS320C54_addm, // Add Long-Immediate Value to Memory TMS320C54_adds, // Add to Accumulator With Sign-Extension Suppressed // SUBTRACT INSTRUCTIONS TMS320C54_sub1, // Sub From Accumulator TMS320C54_sub2, // Sub From Accumulator TMS320C54_sub3, // Sub From Accumulator TMS320C54_subb, // Sub From Accumulator With Borrow TMS320C54_subc, // Subtract Conditionally TMS320C54_subs, // Subtract From Accumulator With Sign Extension Suppressed // MULTIPLY INSTRUCTIONS TMS320C54_mpy2, // Multiply Without Rounding TMS320C54_mpy3, // Multiply Without Rounding TMS320C54_mpyr2, // Multiply With Rounding TMS320C54_mpya, // Multiply by Accumulator A TMS320C54_mpyu, // Multiply Unsigned TMS320C54_squr, // Square // MULTIPLY-ACCUMULATE AND MULTIPLY-SUBTRACT INSTRUCTIONS TMS320C54_mac2, // Multiply Accumulate Without Rounding TMS320C54_mac3, // Multiply Accumulate Without Rounding TMS320C54_macr2, // Multiply Accumulate With Rounding TMS320C54_macr3, // Multiply Accumulate With Rounding TMS320C54_maca1, // Multiply by Accumulator A and Accumulate Without Rounding TMS320C54_maca2, // Multiply by Accumulator A and Accumulate Without Rounding TMS320C54_maca3, // Multiply by Accumulator A and Accumulate Without Rounding TMS320C54_macar1, // Multiply by Accumulator A and Accumulate With Rounding TMS320C54_macar2, // Multiply by Accumulator A and Accumulate With Rounding TMS320C54_macar3, // Multiply by Accumulator A and Accumulate With Rounding TMS320C54_macd, // Multiply by Program Memory and Accumulate With Delay TMS320C54_macp, // Multiply by Program Memory and Accumulate TMS320C54_macsu, // Multiply Signed by Unsigned and Accumulate TMS320C54_mas2, // Multiply and Subtract Without Rounding TMS320C54_mas3, // Multiply and Subtract Without Rounding TMS320C54_masr2, // Multiply and Subtract With Rounding TMS320C54_masr3, // Multiply and Subtract With Rounding // TMS320C54_mas, TMS320C54_masa1, // Multiply by Accumulator A and Subtract Without Rounding TMS320C54_masa2, // Multiply by Accumulator A and Subtract Without Rounding TMS320C54_masa3, // Multiply by Accumulator A and Subtract Without Rounding TMS320C54_masar1, // Multiply by Accumulator A and Subtract With Rounding TMS320C54_masar2, // Multiply by Accumulator A and Subtract With Rounding TMS320C54_masar3, // Multiply by Accumulator A and Subtract With Rounding TMS320C54_squra, // Square and Accumulate TMS320C54_squrs, // Square and Subtract // DOUBLE INSTRUCTIONS TMS320C54_dadd2, // Double-Precision/Dual 16-Bit Add to Accumulator TMS320C54_dadd3, // Double-Precision/Dual 16-Bit Add to Accumulator TMS320C54_dadst, // Double-Precision Load With T Add/Dual 16-Bit Load With T Add/Subtract TMS320C54_drsub, // Double-Precision/Dual 16-Bit Subtract From Long Word TMS320C54_dsadt, // Long-Word Load With T Add/Dual 16-Bit Load With T Subtract/Add TMS320C54_dsub, // Double-Precision/Dual 16-Bit Subtract From Accumulator TMS320C54_dsubt, // Long-Word Load With T Subtract/Dual 16-Bit Load With T Subtract // APPLICATION-SPECIFIC INSTRUCTIONS TMS320C54_abdst, // Absolute distance TMS320C54_abs1, // Absolute Value of Accumulator TMS320C54_abs2, // Absolute Value of Accumulator TMS320C54_cmpl1, // Complement Accumulator TMS320C54_cmpl2, // Complement Accumulator TMS320C54_delay, // Memory Delay TMS320C54_exp, // Accumulator Exponent TMS320C54_firs, // Symmetrical Finite Impulse Response Filter TMS320C54_lms, // Least Mean Square TMS320C54_max, // Accumulator Maximum TMS320C54_min, // Accumulator Minimum TMS320C54_neg1, // Negate Accumulator TMS320C54_neg2, // Negate Accumulator TMS320C54_norm1, // Normalization TMS320C54_norm2, // Normalization TMS320C54_poly, // Polynominal Evaluation TMS320C54_rnd1, // Round Accumulator TMS320C54_rnd2, // Round Accumulator TMS320C54_sat, // Saturate Accumulator TMS320C54_sqdst, // Square Distance // LOGICAL OPERATIONS // AND INSTRUCTIONS TMS320C54_and1, // AND With Accumulator TMS320C54_and2, // AND With Accumulator TMS320C54_and3, // AND With Accumulator TMS320C54_andm, // AND Memory With Long Immediate // OR INSTRUCTIONS TMS320C54_or1, // OR With Accumulator TMS320C54_or2, // OR With Accumulator TMS320C54_or3, // OR With Accumulator TMS320C54_orm, // OR Memory With Constant // XOR INSTRUCTIONS TMS320C54_xor1, // Exclusive OR With Accumulator TMS320C54_xor2, // Exclusive OR With Accumulator TMS320C54_xor3, // Exclusive OR With Accumulator TMS320C54_xorm, // Exclusive OR Memory With Constant // SHIFT INSTRUCTIONS TMS320C54_rol, // Rotate Accumulator TMS320C54_roltc, // Rotate Accumulator Left Using TC TMS320C54_ror, // Rotate Accumulator Right TMS320C54_sfta2, // Shift Accumulator Arithmetically TMS320C54_sfta3, // Shift Accumulator Arithmetically TMS320C54_sftc, // Shift Accumulator Conditionally TMS320C54_sftl2, // Shift Accumulator Logically TMS320C54_sftl3, // Shift Accumulator Logically // TEST INSTRUCTIONS TMS320C54_bit, // Test Bit TMS320C54_bitf, // Test Bit Field Specified by Immediate Value TMS320C54_bitt, // Test Bit Specified by T TMS320C54_cmpm, // Compare Memory With Long Immediate TMS320C54_cmpr, // Compare Auxiliary Register with AR0 // PROGRAM CONTROL OPERATIONS // BRANCH INSTRUCTIONS TMS320C54_b, // Branch Unconditionally TMS320C54_bd, // Branch Unconditionally TMS320C54_bacc, // Branch to Location Specified by Accumulator TMS320C54_baccd, // Branch to Location Specified by Accumulator TMS320C54_banz, // Branch on Auxiliary Register Not Zero TMS320C54_banzd, // Branch on Auxiliary Register Not Zero TMS320C54_bc2, // Branch Conditionally TMS320C54_bc3, // Branch Conditionally TMS320C54_bcd2, // Branch Conditionally TMS320C54_bcd3, // Branch Conditionally TMS320C54_fb, // Far Branch Unconditionally TMS320C54_fbd, // Far Branch Unconditionally TMS320C54_fbacc, // Far Branch to Location Specified by Accumulator TMS320C54_fbaccd, // Far Branch to Location Specified by Accumulator // CALL INSTRUCTIONS TMS320C54_cala, // Call Subroutine at Location Specified by Accumulator TMS320C54_calad, // Call Subroutine at Location Specified by Accumulator TMS320C54_call, // Call Unconditionally TMS320C54_calld, // Call Unconditionally TMS320C54_cc2, // Call Conditionally TMS320C54_cc3, // Call Conditionally TMS320C54_ccd2, // Call Conditionally TMS320C54_ccd3, // Call Conditionally TMS320C54_fcala, // Far Call Subroutine at Location Specified by Accumulator TMS320C54_fcalad, // Far Call Subroutine at Location Specified by Accumulator TMS320C54_fcall, // Far Call Unconditionally TMS320C54_fcalld, // Far Call Unconditionally // INTERRUPT INSTRUCTIONS TMS320C54_intr, // Software Interrupt TMS320C54_trap, // Software Interrupt // RETURN INSTRUCTIONS TMS320C54_fret, // Far Return TMS320C54_fretd, // Far Return TMS320C54_frete, // Enable Interrupts and Far Return From Interrupt TMS320C54_freted, // Enable Interrupts and Far Return From Interrupt TMS320C54_rc1, // Return Conditionally TMS320C54_rc2, // Return Conditionally TMS320C54_rc3, // Return Conditionally TMS320C54_rcd1, // Return Conditionally TMS320C54_rcd2, // Return Conditionally TMS320C54_rcd3, // Return Conditionally TMS320C54_ret, // Return TMS320C54_retd, // Return TMS320C54_rete, // Enable Interrupts and Return From Interrupt TMS320C54_reted, // Enable Interrupts and Return From Interrupt TMS320C54_retf, // Enable Interrupts and Fast Return From Interrupt TMS320C54_retfd, // Enable Interrupts and Fast Return From Interrupt // REPEAT INSTRUCTIONS TMS320C54_rpt, // Repeat Next Instruction TMS320C54_rptb, // Block Repeat TMS320C54_rptbd, // Block Repeat TMS320C54_rptz, // Repeat Next Instruction And Clear Accumulator // STACK MANIPULATING INSTRUCTIONS TMS320C54_frame, // Stack Pointer Immediate Offset TMS320C54_popd, // Pop Top of Stack to Data Memory TMS320C54_popm, // Pop Top of Stack to Memory-Mapped Register TMS320C54_pshd, // Push Data-Memory Value Onto Stack TMS320C54_pshm, // Push Memory-Mapped Register Onto Stack // MISCELLANEOUS PROGRAM-CONTROL INSTRUCTIONS TMS320C54_idle, // Idle Until Interrupt TMS320C54_mar, // Modify Auxiliary Register TMS320C54_nop, // No Operation TMS320C54_reset, // Software Reset TMS320C54_rsbx1, // Reset Status Register Bit TMS320C54_rsbx2, // Reset Status Register Bit TMS320C54_ssbx1, // Set Status Register Bit TMS320C54_ssbx2, // Set Status Register Bit TMS320C54_xc2, // Execute Conditionally TMS320C54_xc3, // Execute Conditionally // LOAD AND STORE OPERATIONS // LOAD INSTRUCTIONS TMS320C54_dld, // Double-Precision/Dual 16-Bit Long-Word Load to Accumulator TMS320C54_ld1, // Load Accumulator With Shift TMS320C54_ld2, // Load Accumulator With Shift TMS320C54_ld3, // Load Accumulator With Shift TMS320C54_ldm, // Load Memory-Mapped Register TMS320C54_ldr, // Load Memory Value in Accumulator High With Rounding TMS320C54_ldu, // Load Unsigned Memory Value TMS320C54_ltd, // Load T and insert Delay // STORE INSTRUCTIONS TMS320C54_dst, // Store Accumulator in Long Word TMS320C54_st, // Store T, TRN, or Immediate Value into Memory TMS320C54_sth2, // Store Accumulator High Into Memory TMS320C54_sth3, // Store Accumulator High Into Memory TMS320C54_stl2, // Store Accumulator Low Into Memory TMS320C54_stl3, // Store Accumulator Low Into Memory TMS320C54_stlm, // Store Accumulator Low Into Memory-Mapped Register TMS320C54_stm, // Store Immediate Value Into Memory-Mapped Register // CONDITIONAL STORE INSTRUCTIONS TMS320C54_cmps, // Compare, Select and Store Maximum TMS320C54_saccd, // Store Accumulator Conditionally TMS320C54_srccd, // Store Block Repeat Counter Conditionally TMS320C54_strcd, // Store T Conditionally // PARALLEL LOAD AND STORE INSTRUCTIONS TMS320C54_st_ld, // Store Accumulator With Parallel Load // PARALLEL LOAD AND MULTIPLY INSTRUCTIONS TMS320C54_ld_mac, // Load Accumulator With Parallel Multiply Accumulate Without Rounding TMS320C54_ld_macr, // Load Accumulator With Parallel Multiply Accumulate With Rounding TMS320C54_ld_mas, // Load Accumulator With Parallel Multiply Subtract Without Rounding TMS320C54_ld_masr, // Load Accumulator With Parallel Multiply Subtract With Rounding // PARALLEL STORE AND ADD/SUBSTRACT INSTRUCTIONS TMS320C54_st_add, // Store Accumulator With Parallel Add TMS320C54_st_sub, // Store Accumulator With Parallel Subtract // PARALLEL STORE AND MULTIPLY INSTRUCTIONS TMS320C54_st_mac, // Store Accumulator With Parallel Multiply Accumulate Without Rounding TMS320C54_st_macr, // Store Accumulator With Parallel Multiply Accumulate With Rounding TMS320C54_st_mas, // Store Accumulator With Parallel Multiply Subtract Without Rounding TMS320C54_st_masr, // Store Accumulator With Parallel Multiply Subtract With Rounding TMS320C54_st_mpy, // Store Accumulator With Parallel Multiply // MISCELLANEOUS LOAD-TYPE AND STORE-TYPE INSTRUCTIONS TMS320C54_mvdd, // Move Data From Data Memory to Data Memory With X,Y Addressing TMS320C54_mvdk, // Move Data From Data Memory to Data Memory With Destination Addressing TMS320C54_mvdm, // Move Data From Data Memory to Memory-Mapped Register TMS320C54_mvdp, // Move Data From Data Memory to Program Memory TMS320C54_mvkd, // Move Data From Data Memory to Data Memory With Source Addressing TMS320C54_mvmd, // Move Data From Memory-Mapped Register to Data Memory TMS320C54_mvmm, // Move Data From Memory-Mapped Register to Memory-Mapped Register TMS320C54_mvpd, // Move Data From Program Memory to Data Memory TMS320C54_portr, // Read Data From Port TMS320C54_portw, // Write Data to Port TMS320C54_reada, // Read Program Memory Addressed by Accumulator A and Store in Data Memory TMS320C54_writa, // Write Data to Program Memory Addressed by Accumulator A TMS320C54_last }; #endif