Go to the documentation of this file.
    4 #ifdef CAPSTONE_HAS_TMS320C64X 
    8 #ifndef _CRT_SECURE_NO_WARNINGS 
    9 #define _CRT_SECURE_NO_WARNINGS 
   14 #pragma warning(disable:28719) 
   21 #include "../../MCInst.h" 
   22 #include "../../utils.h" 
   23 #include "../../SStream.h" 
   24 #include "../../MCRegisterInfo.h" 
   25 #include "../../MathExtras.h" 
   30 static char *getRegisterName(
unsigned RegNo);
 
   31 static void printOperand(
MCInst *MI, 
unsigned OpNo, 
SStream *O);
 
   32 static void printMemOperand(
MCInst *MI, 
unsigned OpNo, 
SStream *O);
 
   33 static void printMemOperand2(
MCInst *MI, 
unsigned OpNo, 
SStream *O);
 
   34 static void printRegPair(
MCInst *MI, 
unsigned OpNo, 
SStream *O);
 
   40         unsigned int unit = 0;
 
   45                 tms320c64x = &mci->
flat_insn->detail->tms320c64x;
 
   47                 for (
i = 0; 
i < insn->detail->groups_count; 
i++) {
 
   48                         switch(insn->detail->groups[
i]) {
 
   76                 p = strchr(insn_asm, 
'\t');
 
   81                 if ((
p != NULL) && (((p2 = strchr(
p, 
'[')) != NULL) || ((p2 = strchr(
p, 
'(')) != NULL))) {
 
   82                         while ((p2 > 
p) && ((*p2 != 
'a') && (*p2 != 
'b')))
 
   85                                 strcpy(insn_asm, 
"Invalid!");
 
  119                 strcpy(insn_asm, ss.
buffer);
 
  123 #define PRINT_ALIAS_INSTR 
  124 #include "TMS320C64xGenAsmWriter.inc" 
  126 #define GET_INSTRINFO_ENUM 
  127 #include "TMS320C64xGenInstrInfo.inc" 
  129 static void printOperand(
MCInst *MI, 
unsigned OpNo, 
SStream *O)
 
  154                         MI->
flat_insn->detail->tms320c64x.operands[MI->
flat_insn->detail->tms320c64x.op_count].reg = reg;
 
  155                         MI->
flat_insn->detail->tms320c64x.op_count++;
 
  174                         MI->
flat_insn->detail->tms320c64x.operands[MI->
flat_insn->detail->tms320c64x.op_count].imm = Imm;
 
  175                         MI->
flat_insn->detail->tms320c64x.op_count++;
 
  180 static void printMemOperand(
MCInst *MI, 
unsigned OpNo, 
SStream *O)
 
  188         scaled = (Val >> 19) & 1;
 
  189         base = (Val >> 12) & 0x7f;
 
  190         offset = (Val >> 5) & 0x7f;
 
  191         mode = (Val >> 1) & 0xf;
 
  242                 tms320c64x = &MI->
flat_insn->detail->tms320c64x;
 
  315 static void printMemOperand2(
MCInst *MI, 
unsigned OpNo, 
SStream *O)
 
  323         basereg = Val & 0x7f;
 
  324         offset = (Val >> 7) & 0x7fff;
 
  328                 tms320c64x = &MI->
flat_insn->detail->tms320c64x;
 
  341 static void printRegPair(
MCInst *MI, 
unsigned OpNo, 
SStream *O)
 
  347         SStream_concat(O, 
"%s:%s", getRegisterName(reg + 1), getRegisterName(reg));
 
  350                 tms320c64x = &MI->
flat_insn->detail->tms320c64x;
 
  365                 case TMS320C64x_ADD_d2_rir:
 
  367                 case TMS320C64x_ADD_l1_irr:
 
  368                 case TMS320C64x_ADD_l1_ipp:
 
  370                 case TMS320C64x_ADD_s1_irr:
 
  382                                 printOperand(MI, 1, O);
 
  384                                 printOperand(MI, 2, O);
 
  386                                 printOperand(MI, 0, O);
 
  394                 case TMS320C64x_ADD_d1_rir:
 
  396                 case TMS320C64x_OR_d2_rir:
 
  398                 case TMS320C64x_ADD_l1_irr:
 
  399                 case TMS320C64x_ADD_l1_ipp:
 
  401                 case TMS320C64x_OR_l1_irr:
 
  403                 case TMS320C64x_ADD_s1_irr:
 
  405                 case TMS320C64x_OR_s1_irr:
 
  416                                 printOperand(MI, 1, O);
 
  418                                 printOperand(MI, 0, O);
 
  426                 case TMS320C64x_XOR_d2_rir:
 
  428                 case TMS320C64x_XOR_l1_irr:
 
  430                 case TMS320C64x_XOR_s1_irr:
 
  441                                 printOperand(MI, 1, O);
 
  443                                 printOperand(MI, 0, O);
 
  451                 case TMS320C64x_MVK_d1_rr:
 
  453                 case TMS320C64x_MVK_l2_ir:
 
  463                                 printOperand(MI, 0, O);
 
  471                 case TMS320C64x_SUB_l1_rrp_x1:
 
  473                 case TMS320C64x_SUB_s1_rrr:
 
  484                                 printOperand(MI, 0, O);
 
  492                 case TMS320C64x_SUB_l1_irr:
 
  493                 case TMS320C64x_SUB_l1_ipp:
 
  495                 case TMS320C64x_SUB_s1_irr:
 
  506                                 printOperand(MI, 1, O);
 
  508                                 printOperand(MI, 0, O);
 
  516                 case TMS320C64x_PACKLH2_l1_rrr_x2:
 
  518                 case TMS320C64x_PACKLH2_s1_rrr:
 
  529                                 printOperand(MI, 1, O);
 
  531                                 printOperand(MI, 0, O);
 
  540                 case TMS320C64x_NOP_n:
 
  570         if (!printAliasInstruction(MI, O, Info))
 
  571                 printInstruction(MI, O, Info);
 
  
unsigned MCOperand_getReg(const MCOperand *op)
getReg - Returns the register number.
tms320c64x_op_mem mem
base/disp value for MEM operand
MCOperand * MCInst_getOperand(MCInst *inst, unsigned i)
struct cs_tms320c64x::@169 condition
tms320c64x_op_type type
operand type
unsigned int disp
displacement/offset value
unsigned int scaled
offset scaled
@ TMS320C64X_GRP_FUNIT_NO
int64_t MCOperand_getImm(MCOperand *op)
@ TMS320C64X_MEM_MOD_POST
unsigned MCInst_getNumOperands(const MCInst *inst)
@ TMS320C64X_OP_IMM
= CS_OP_IMM (Immediate operand).
const CAPSTONE_EXPORT char *CAPSTONE_API cs_reg_name(csh ud, unsigned int reg)
void SStream_concat0(SStream *ss, const char *s)
@ TMS320C64X_MEM_DISP_CONSTANT
unsigned int disptype
displacement type
@ TMS320C64X_MEM_DISP_REGISTER
void TMS320C64x_printInst(MCInst *MI, SStream *O, void *Info)
unsigned int modify
modification
unsigned int unit
unit of base and offset register
void TMS320C64x_post_printer(csh ud, cs_insn *insn, char *insn_asm, MCInst *mci)
@ TMS320C64X_OP_MEM
= CS_OP_MEM (Memory operand).
unsigned MCInst_getOpcode(const MCInst *inst)
bool MCOperand_isImm(const MCOperand *op)
void MCOperand_setImm(MCOperand *op, int64_t Val)
void SStream_concat(SStream *ss, const char *fmt,...)
unsigned int direction
direction
void SStream_Init(SStream *ss)
@ TMS320C64X_OP_REG
= CS_OP_REG (Register operand).
unsigned int reg
register value for REG operand or first register for REGPAIR operand
void MCInst_setOpcodePub(MCInst *inst, unsigned Op)
@ TMS320C64X_OP_REGPAIR
Register pair for double word ops.
unsigned int base
base register
bool MCOperand_isReg(const MCOperand *op)
cs_tms320c64x_op operands[8]
operands for this instruction.
struct cs_tms320c64x::@170 funit
grpc
Author(s): 
autogenerated on Fri May 16 2025 03:00:39