📄 irdefs.c
字号:
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 + -