⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 irdefs.c

📁 unix下调试内存泄露的工具源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
      case Iop_CmpLT64F0x2: vex_printf("CmpLT64F0x2"); return;      case Iop_CmpLE64F0x2: vex_printf("CmpLE64F0x2"); return;      case Iop_CmpUN64F0x2: vex_printf("CmpUN64F0x2"); return;      case Iop_V128to64:   vex_printf("V128to64");   return;      case Iop_V128HIto64: vex_printf("V128HIto64"); return;      case Iop_64HLtoV128: vex_printf("64HLtoV128"); return;      case Iop_64UtoV128:   vex_printf("64UtoV128"); return;      case Iop_SetV128lo64: vex_printf("SetV128lo64"); return;      case Iop_32UtoV128:   vex_printf("32UtoV128"); return;      case Iop_V128to32:    vex_printf("V128to32"); return;      case Iop_SetV128lo32: vex_printf("SetV128lo32"); return;      case Iop_NotV128:    vex_printf("NotV128"); return;      case Iop_AndV128:    vex_printf("AndV128"); return;      case Iop_OrV128:     vex_printf("OrV128");  return;      case Iop_XorV128:    vex_printf("XorV128"); return;      case Iop_CmpNEZ8x16: vex_printf("CmpNEZ8x16"); return;      case Iop_CmpNEZ16x8: vex_printf("CmpNEZ16x8"); return;      case Iop_CmpNEZ32x4: vex_printf("CmpNEZ32x4"); return;      case Iop_CmpNEZ64x2: vex_printf("CmpNEZ64x2"); return;      case Iop_Add8x16:   vex_printf("Add8x16"); return;      case Iop_Add16x8:   vex_printf("Add16x8"); return;      case Iop_Add32x4:   vex_printf("Add32x4"); return;      case Iop_Add64x2:   vex_printf("Add64x2"); return;      case Iop_QAdd8Ux16: vex_printf("QAdd8Ux16"); return;      case Iop_QAdd16Ux8: vex_printf("QAdd16Ux8"); return;      case Iop_QAdd8Sx16: vex_printf("QAdd8Sx16"); return;      case Iop_QAdd16Sx8: vex_printf("QAdd16Sx8"); return;      case Iop_Sub8x16:   vex_printf("Sub8x16"); return;      case Iop_Sub16x8:   vex_printf("Sub16x8"); return;      case Iop_Sub32x4:   vex_printf("Sub32x4"); return;      case Iop_Sub64x2:   vex_printf("Sub64x2"); return;      case Iop_QSub8Ux16: vex_printf("QSub8Ux16"); return;      case Iop_QSub16Ux8: vex_printf("QSub16Ux8"); return;      case Iop_QSub8Sx16: vex_printf("QSub8Sx16"); return;      case Iop_QSub16Sx8: vex_printf("QSub16Sx8"); return;      case Iop_Mul16x8:    vex_printf("Mul16x8"); return;      case Iop_MulHi16Ux8: vex_printf("MulHi16Ux8"); return;      case Iop_MulHi16Sx8: vex_printf("MulHi16Sx8"); return;      case Iop_Avg8Ux16: vex_printf("Avg8Ux16"); return;      case Iop_Avg16Ux8: vex_printf("Avg16Ux8"); return;      case Iop_Max16Sx8: vex_printf("Max16Sx8"); return;      case Iop_Max8Ux16: vex_printf("Max8Ux16"); return;      case Iop_Min16Sx8: vex_printf("Min16Sx8"); return;      case Iop_Min8Ux16: vex_printf("Min8Ux16"); return;      case Iop_CmpEQ8x16:  vex_printf("CmpEQ8x16"); return;      case Iop_CmpEQ16x8:  vex_printf("CmpEQ16x8"); return;      case Iop_CmpEQ32x4:  vex_printf("CmpEQ32x4"); return;      case Iop_CmpGT8Sx16: vex_printf("CmpGT8Sx16"); return;      case Iop_CmpGT16Sx8: vex_printf("CmpGT16Sx8"); return;      case Iop_CmpGT32Sx4: vex_printf("CmpGT32Sx4"); return;      case Iop_ShlN16x8: vex_printf("ShlN16x8"); return;      case Iop_ShlN32x4: vex_printf("ShlN32x4"); return;      case Iop_ShlN64x2: vex_printf("ShlN64x2"); return;      case Iop_ShrN16x8: vex_printf("ShrN16x8"); return;      case Iop_ShrN32x4: vex_printf("ShrN32x4"); return;      case Iop_ShrN64x2: vex_printf("ShrN64x2"); return;      case Iop_SarN16x8: vex_printf("SarN16x8"); return;      case Iop_SarN32x4: vex_printf("SarN32x4"); return;      case Iop_QNarrow16Ux8: vex_printf("QNarrow16Ux8"); return;      case Iop_QNarrow16Sx8: vex_printf("QNarrow16Sx8"); return;      case Iop_QNarrow32Sx4: vex_printf("QNarrow32Sx4"); return;      case Iop_InterleaveHI8x16: vex_printf("InterleaveHI8x16"); return;      case Iop_InterleaveHI16x8: vex_printf("InterleaveHI16x8"); return;      case Iop_InterleaveHI32x4: vex_printf("InterleaveHI32x4"); return;      case Iop_InterleaveHI64x2: vex_printf("InterleaveHI64x2"); return;      case Iop_InterleaveLO8x16: vex_printf("InterleaveLO8x16"); return;      case Iop_InterleaveLO16x8: vex_printf("InterleaveLO16x8"); return;      case Iop_InterleaveLO32x4: vex_printf("InterleaveLO32x4"); return;      case Iop_InterleaveLO64x2: vex_printf("InterleaveLO64x2"); return;      default: vpanic("ppIROp(1)");   }     switch (op - base) {      case 0: vex_printf(str); vex_printf("8"); break;      case 1: vex_printf(str); vex_printf("16"); break;      case 2: vex_printf(str); vex_printf("32"); break;      case 3: vex_printf(str); vex_printf("64"); break;      default: vpanic("ppIROp(2)");   }}void ppIRExpr ( IRExpr* e ){  Int i;  switch (e->tag) {    case Iex_Binder:      vex_printf("BIND-%d", e->Iex.Binder.binder);      break;    case Iex_Get:      vex_printf( "GET:" );      ppIRType(e->Iex.Get.ty);      vex_printf("(%d)", e->Iex.Get.offset);      break;    case Iex_GetI:      vex_printf( "GETI" );      ppIRArray(e->Iex.GetI.descr);      vex_printf("[");      ppIRExpr(e->Iex.GetI.ix);      vex_printf(",%d]", e->Iex.GetI.bias);      break;    case Iex_Tmp:      ppIRTemp(e->Iex.Tmp.tmp);      break;    case Iex_Binop:      ppIROp(e->Iex.Binop.op);      vex_printf( "(" );      ppIRExpr(e->Iex.Binop.arg1);      vex_printf( "," );      ppIRExpr(e->Iex.Binop.arg2);      vex_printf( ")" );      break;    case Iex_Unop:      ppIROp(e->Iex.Unop.op);      vex_printf( "(" );      ppIRExpr(e->Iex.Unop.arg);      vex_printf( ")" );      break;    case Iex_Load:      vex_printf( "LD%s:", e->Iex.Load.end==Iend_LE ? "le" : "be" );      ppIRType(e->Iex.Load.ty);      vex_printf( "(" );      ppIRExpr(e->Iex.Load.addr);      vex_printf( ")" );      break;    case Iex_Const:      ppIRConst(e->Iex.Const.con);      break;    case Iex_CCall:      ppIRCallee(e->Iex.CCall.cee);      vex_printf("(");      for (i = 0; e->Iex.CCall.args[i] != NULL; i++) {        ppIRExpr(e->Iex.CCall.args[i]);        if (e->Iex.CCall.args[i+1] != NULL)          vex_printf(",");      }      vex_printf("):");      ppIRType(e->Iex.CCall.retty);      break;    case Iex_Mux0X:      vex_printf("Mux0X(");      ppIRExpr(e->Iex.Mux0X.cond);      vex_printf(",");      ppIRExpr(e->Iex.Mux0X.expr0);      vex_printf(",");      ppIRExpr(e->Iex.Mux0X.exprX);      vex_printf(")");      break;    default:      vpanic("ppIRExpr");  }}void ppIREffect ( IREffect fx ){   switch (fx) {      case Ifx_None:   vex_printf("noFX"); return;      case Ifx_Read:   vex_printf("RdFX"); return;      case Ifx_Write:  vex_printf("WrFX"); return;      case Ifx_Modify: vex_printf("MoFX"); return;      default: vpanic("ppIREffect");   }}void ppIRDirty ( IRDirty* d ){   Int i;   if (d->tmp != IRTemp_INVALID) {      ppIRTemp(d->tmp);      vex_printf(" = ");   }   vex_printf("DIRTY ");   ppIRExpr(d->guard);   if (d->needsBBP)      vex_printf(" NeedsBBP");   if (d->mFx != Ifx_None) {      vex_printf(" ");      ppIREffect(d->mFx);      vex_printf("-mem(");      ppIRExpr(d->mAddr);      vex_printf(",%d)", d->mSize);   }   for (i = 0; i < d->nFxState; i++) {      vex_printf(" ");      ppIREffect(d->fxState[i].fx);      vex_printf("-gst(%d,%d)", d->fxState[i].offset, d->fxState[i].size);   }   vex_printf(" ::: ");   ppIRCallee(d->cee);   vex_printf("(");   for (i = 0; d->args[i] != NULL; i++) {      ppIRExpr(d->args[i]);      if (d->args[i+1] != NULL) {         vex_printf(",");      }   }   vex_printf(")");}void ppIRJumpKind ( IRJumpKind kind ){   switch (kind) {      case Ijk_Boring:    vex_printf("Boring"); break;      case Ijk_Call:      vex_printf("Call"); break;      case Ijk_Ret:       vex_printf("Return"); break;      case Ijk_ClientReq: vex_printf("ClientReq"); break;      case Ijk_Syscall:   vex_printf("Syscall"); break;      case Ijk_Yield:     vex_printf("Yield"); break;      case Ijk_EmWarn:    vex_printf("EmWarn"); break;      case Ijk_NoDecode:  vex_printf("NoDecode"); break;      case Ijk_MapFail:   vex_printf("MapFail"); break;      case Ijk_TInval:    vex_printf("Invalidate"); break;      default:            vpanic("ppIRJumpKind");   }}void ppIRStmt ( IRStmt* s ){   if (!s) {      vex_printf("!!! IRStmt* which is NULL !!!");      return;   }   switch (s->tag) {      case Ist_NoOp:         vex_printf("IR-NoOp");         break;      case Ist_IMark:         vex_printf( "------ IMark(0x%llx, %d) ------",                      s->Ist.IMark.addr, s->Ist.IMark.len);         break;      case Ist_AbiHint:         vex_printf("====== AbiHint(");         ppIRExpr(s->Ist.AbiHint.base);         vex_printf(", %d) ======", s->Ist.AbiHint.len);         break;      case Ist_Put:         vex_printf( "PUT(%d) = ", s->Ist.Put.offset);         ppIRExpr(s->Ist.Put.data);         break;      case Ist_PutI:         vex_printf( "PUTI" );         ppIRArray(s->Ist.PutI.descr);         vex_printf("[");         ppIRExpr(s->Ist.PutI.ix);         vex_printf(",%d] = ", s->Ist.PutI.bias);         ppIRExpr(s->Ist.PutI.data);         break;      case Ist_Tmp:         ppIRTemp(s->Ist.Tmp.tmp);         vex_printf( " = " );         ppIRExpr(s->Ist.Tmp.data);         break;      case Ist_Store:         vex_printf( "ST%s(", s->Ist.Store.end==Iend_LE ? "le" : "be" );         ppIRExpr(s->Ist.Store.addr);         vex_printf( ") = ");         ppIRExpr(s->Ist.Store.data);         break;      case Ist_Dirty:         ppIRDirty(s->Ist.Dirty.details);         break;      case Ist_MFence:         vex_printf("IR-MFence");         break;      case Ist_Exit:         vex_printf( "if (" );         ppIRExpr(s->Ist.Exit.guard);         vex_printf( ") goto {");         ppIRJumpKind(s->Ist.Exit.jk);         vex_printf("} ");         ppIRConst(s->Ist.Exit.dst);         break;      default:          vpanic("ppIRStmt");   }}void ppIRTypeEnv ( IRTypeEnv* env ) {   UInt i;   for (i = 0; i < env->types_used; i++) {      if (i % 8 == 0)         vex_printf( "   ");      ppIRTemp(i);      vex_printf( ":");      ppIRType(env->types[i]);      if (i % 8 == 7)          vex_printf( "\n");       else          vex_printf( "   ");   }   if (env->types_used > 0 && env->types_used % 8 != 7)       vex_printf( "\n"); }void ppIRBB ( IRBB* bb ){   Int i;   vex_printf("IRBB {\n");   ppIRTypeEnv(bb->tyenv);   vex_printf("\n");   for (i = 0; i < bb->stmts_used; i++) {      vex_printf( "   ");      ppIRStmt(bb->stmts[i]);      vex_printf( "\n");   }   vex_printf( "   goto {");   ppIRJumpKind(bb->jumpkind);   vex_printf( "} ");   ppIRExpr( bb->next );   vex_printf( "\n}\n");}/*---------------------------------------------------------------*//*--- Constructors                                            ---*//*---------------------------------------------------------------*//* Constructors -- IRConst */IRConst* IRConst_U1 ( Bool bit ){   IRConst* c = LibVEX_Alloc(sizeof(IRConst));   c->tag     = Ico_U1;   c->Ico.U1  = bit;   /* call me paranoid; I don't care :-) */   vassert(bit == False || bit == True);   return c;}IRConst* IRConst_U8 ( UChar u8 ){   IRConst* c = LibVEX_Alloc(sizeof(IRConst));   c->tag     = Ico_U8;   c->Ico.U8  = u8;   return c;}IRConst* IRConst_U16 ( UShort u16 ){   IRConst* c = LibVEX_Alloc(sizeof(IRConst));   c->tag     = Ico_U16;   c->Ico.U16 = u16;   return c;}IRConst* IRConst_U32 ( UInt u32 ){   IRConst* c = LibVEX_Alloc(sizeof(IRConst));   c->tag     = Ico_U32;   c->Ico.U32 = u32;   return c;}IRConst* IRConst_U64 ( ULong u64 ){   IRConst* c = LibVEX_Alloc(sizeof(IRConst));   c->tag     = Ico_U64;   c->Ico.U64 = u64;   return c;}IRConst* IRConst_F64 ( Double f64 ){   IRConst* c = LibVEX_Alloc(sizeof(IRConst));   c->tag     = Ico_F64;   c->Ico.F64 = f64;   return c;}IRConst* IRConst_F64i ( ULong f64i ){   IRConst* c  = LibVEX_Alloc(sizeof(IRConst));   c->tag      = Ico_F64i;   c->Ico.F64i = f64i;   return c;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -