亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? x86dis.cc

?? 功能較全面的反匯編器:反匯編器ht-2.0.15.tar.gz
?? CC
?? 第 1 頁 / 共 3 頁
字號:
		default: {assert(0);}		}		int s = esizeop(xop->size);		sint64 addr = getoffset() + (codep - ocodep);		switch (s) {		case 1:			op->imm = sint8(getbyte()) + addr + 1;			break;		case 2:			op->imm = sint16(getword()) + addr + 2;			break;		case 4:		case 8:			op->imm = sint32(getdword()) + addr + 4;			break;		}		break;	}	case TYPE_M: {		/* ModR/M (memory only) */		decode_modrm(op, xop->size, false, true, false, false, false);		break;	}	case TYPE_MR: {		/* ModR/M (memory only) */		int modrm = getmodrm();		int mod = mkmod(modrm);		byte xopsize = xop->size;		if (mod == 3) {			xopsize = xop->extra;		}		decode_modrm(op, xopsize, (xopsize != SIZE_P), true, false, false, false);		break;	}	case TYPE_O: {		/* direct memory without ModR/M */		op->type = X86_OPTYPE_MEM;		op->size = esizeop(xop->size);		op->mem.floatptr = isfloat(xop->size);		op->mem.addrptr = isaddr(xop->size);		op->mem.addrsize = insn.eaddrsize;		op->mem.hasdisp = true;		switch (insn.eaddrsize) {		case X86_ADDRSIZE16:			op->mem.disp = getword();			break;		case X86_ADDRSIZE32:			op->mem.disp = getdword();			break;		case X86_ADDRSIZE64:			op->mem.disp = getqword();			break;		default: {assert(0);}		}		op->mem.base = X86_REG_NO;		op->mem.index = X86_REG_NO;		op->mem.scale = 1;		break;	}	case TYPE_P: {		/* reg of ModR/M picks MMX register */		if (is_xmm_op(&insn, xop->size)) {			op->type = X86_OPTYPE_XMM;			op->xmm = mkreg(getmodrm());		} else {			op->type = X86_OPTYPE_MMX;			op->mmx = mkreg(getmodrm());		}		op->size = esizeop(xop->size);		break;	}	case TYPE_PR: {		/* rm of ModR/M picks MMX register */		if (mkmod(getmodrm()) == 3) {			if (is_xmm_op(&insn, xop->size)) {				op->type = X86_OPTYPE_XMM;				op->xmm = mkrm(getmodrm());			} else {				op->type = X86_OPTYPE_MMX;				op->mmx = mkrm(getmodrm());			}			op->size = esizeop(xop->size);		} else {			invalidate();		}		break;	}	case TYPE_Q: {		/* ModR/M (MMX reg or memory) */		decode_modrm(op, xop->size, true, true, true, false, false);		break;	}	case TYPE_R: {		/* rm of ModR/M picks general register */		op->type = X86_OPTYPE_REG;		op->size = esizeop(xop->size);		op->reg = mkrm(getmodrm());		break;	}	case TYPE_Rx: {		/* extra picks register */		op->type = X86_OPTYPE_REG;		op->size = esizeop(xop->size);		op->reg = xop->extra | !!rexb(insn.rexprefix) << 3;		break;	}	case TYPE_RXx: {		/* extra picks register */		op->type = X86_OPTYPE_REG;		op->size = esizeop(xop->size);		op->reg = xop->extra;		break;	}	case TYPE_S: {		/* reg of ModR/M picks segment register */		op->type = X86_OPTYPE_SEG;		op->size = esizeop(xop->size);		op->seg = mkreg(getmodrm()) & 0x7;		if (op->seg > 5) invalidate();		break;	}	case TYPE_Sx: {		/* extra picks segment register */		op->type = X86_OPTYPE_SEG;		op->size = esizeop(xop->size);		op->seg = xop->extra;		if (op->seg > 5) invalidate();		break;	}	case TYPE_V: {		/* reg of ModR/M picks XMM register */		op->type = X86_OPTYPE_XMM;		op->size = 16;		op->xmm = mkreg(getmodrm());		break;	}	case TYPE_VI: {		/* bits 7-4 of imm picks XMM register */		op->type = X86_OPTYPE_XMM;		op->size = 16;		op->xmm = getspecialimm() >> 4;		break;	}	case TYPE_VV: {		/* VEX.vvvv picks XMM register */		op->type = X86_OPTYPE_XMM;		op->size = 16;		op->xmm = insn.vexprefix.vvvv;		break;	}	case TYPE_Vx: {		/* extra picks XMM register */		op->type = X86_OPTYPE_XMM;		op->size = 16;		op->reg = xop->extra;		break;	}	case TYPE_VR:		/* rm of ModR/M picks XMM register */		if (mkmod(getmodrm()) == 3) {			op->type = X86_OPTYPE_XMM;			op->size = esizeop(xop->size);			op->xmm = mkrm(getmodrm());		} else {			invalidate();		}		break;	case TYPE_W:		/* ModR/M (XMM reg or memory) */		decode_modrm(op, xop->size, true, true, false, true, false);		break;	case TYPE_VD:		op->type = X86_OPTYPE_XMM;		op->size = 16;		op->reg = drexdest(getdrex());		break;	case TYPE_VS: 		if (xop->info && oc0(getdrex())) {			invalidate();		}		if (oc0(getdrex()) ^ xop->extra) {			decode_modrm(op, xop->size, true, true, false, true, false);		} else {			op->type = X86_OPTYPE_XMM;			op->size = 16;			op->xmm = mkreg(getmodrm());		}		break;	case TYPE_Y:		/* reg of ModR/M picks XMM register */		op->type = X86_OPTYPE_YMM;		op->size = 32;		op->ymm = mkreg(getmodrm());		break;	case TYPE_YV: {		/* VEX.vvvv picks YMM register */		op->type = X86_OPTYPE_YMM;		op->size = 32;		op->ymm = insn.vexprefix.vvvv;		break;	}	case TYPE_YI:		/* bits 7-4 of imm picks YMM register */		op->type = X86_OPTYPE_YMM;		op->size = 32;		op->ymm = getspecialimm() >> 4;		break;	case TYPE_X:		/* ModR/M (XMM reg or memory) */		decode_modrm(op, xop->size, true, true, false, false, true);		break;	}}dis_insn *x86dis::duplicateInsn(dis_insn *disasm_insn){	x86dis_insn *insn = ht_malloc(sizeof (x86dis_insn));	*insn = *(x86dis_insn *)disasm_insn;	return insn;}int x86dis::esizeop(uint c){	switch (c) {	case SIZE_B:		return 1;	case SIZE_W:		return 2;	case SIZE_D:	case SIZE_S:		return 4;	case SIZE_Q:	case SIZE_L:		return 8;	case SIZE_O:		return 16;	case SIZE_Y:		return 32;	case SIZE_T:		return 10;	case SIZE_V:	case SIZE_BV:	case SIZE_VV:		switch (insn.eopsize) {		case X86_OPSIZE16: return 2;		case X86_OPSIZE32: return 4;		case X86_OPSIZE64: return 8;		default: {assert(0);}		}	case SIZE_R:		if (insn.eopsize == X86_OPSIZE64) return 8; else return 4;	case SIZE_U:		if (insn.opsizeprefix == X86_PREFIX_OPSIZE) return 16; else return 8;	case SIZE_Z:		if (insn.opsizeprefix == X86_PREFIX_OPSIZE) return 8; else return 4;	case SIZE_P:		if (insn.eopsize == X86_OPSIZE16) return 4; else return 6;	}	return 0;}int x86dis::esizeop_ex(uint c){	switch (c) {	case SIZE_BV:		return 1;	case SIZE_VV:		switch (insn.eopsize) {		case X86_OPSIZE16: return 2;		case X86_OPSIZE32:		case X86_OPSIZE64: return 4;		default: {assert(0);}		}	}	return esizeop(c);}byte x86dis::getbyte(){	if (codep-ocodep+1 <= maxlen) {		return *(codep++);	} else {		invalidate();		return 0;	}}uint16 x86dis::getword(){	if (codep-ocodep+2 <= maxlen) {		uint16 w;		w = codep[0] | (codep[1]<<8);		codep += 2;		return w;	} else {		invalidate();		return 0;	}}uint32 x86dis::getdword(){	if (codep-ocodep+4 <= maxlen) {		uint32 w;		w = codep[0] | codep[1]<<8 | codep[2]<<16 | codep[3]<<24;		codep += 4;		return w;	} else {		invalidate();		return 0;	}}uint64 x86dis::getqword(){	if (codep-ocodep+8 <= maxlen) {		uint64 w;		w = uint64(codep[0])<< 0 | uint64(codep[1])<< 8 | uint64(codep[2])<<16 | uint64(codep[3])<<24		  | uint64(codep[4])<<32 | uint64(codep[5])<<40 | uint64(codep[6])<<48 | uint64(codep[7])<<56;		codep += 8;		return w;	} else {		invalidate();		return 0;	}}void x86dis::getOpcodeMetrics(int &min_length, int &max_length, int &min_look_ahead, int &avg_look_ahead, int &addr_align){	min_length = 1;	max_length = 15;	min_look_ahead = 120;    // 1/2/3/4/5/6/8/10/12/15	avg_look_ahead = 24;     // 1/2/3/4/6/8/12/24	addr_align = 1;}uint64 x86dis::getoffset(){	return addr.addr32.offset;}void x86dis::filloffset(CPU_ADDR &addr, uint64 offset){	addr.addr32.offset = offset;}uint32 x86dis::getdisp(){	if (have_disp) return disp;	have_disp = true;	int modrm = getmodrm();	int mod = mkmod(modrm);	if (mod == 3) return 0;	int rm = mkrm(modrm);	if (insn.eaddrsize == X86_ADDRSIZE16) {		if (mod == 0 && rm == 6) {			disp = getword();		} else {			switch (mod) {			case 1:				disp = getbyte();				break;			case 2:				disp = getword();				break;			}		}	} else {		if (mod == 0 && rm == 5) {			disp = getdword();		} else if (rm == 4) {			int sib = getsib();			int base = mkbase(sib);			int d = mod;			if ((base & 0x7) == 5 && mod == 0) {				d = 2;			}			switch (d) {			case 1:				disp = getbyte();				break;			case 2:				disp = getdword();				break;			}		} else {			switch (mod) {			case 1:				disp = getbyte();				break;			case 2:				disp = getdword();				break;			}		}	}	return disp;}int x86dis::getmodrm(){	if (modrm == -1) modrm = getbyte();	return modrm;}int x86dis::getdrex(){	if (drex == -1) {		getmodrm();		int modrm = getmodrm();		int mod = mkmod(modrm);		int rm = mkrm(modrm);		if (mod != 3 && (rm & 7) == 4) {			getsib();		}		drex = getbyte();		if (addrsize != X86_ADDRSIZE64) {			drex &= 0x78;		}		insn.rexprefix = drex & 0x7;	}	return drex;}int x86dis::getspecialimm(){	if (special_imm == -1) special_imm = getbyte();	return special_imm;}const char *x86dis::getName(){	return "x86/Disassembler";}int x86dis::getsib(){	if (sib == -1) sib = getbyte();	return sib;}byte x86dis::getSize(dis_insn *disasm_insn){	return ((x86dis_insn*)disasm_insn)->size;}void x86dis::invalidate(){	insn.invalid = true;}bool x86dis::isfloat(char c){	switch (c) {	case SIZE_S:	case SIZE_L:	case SIZE_T:		return true;	}	return false;}bool x86dis::isaddr(char c){	switch (c) {	case SIZE_P:		return true;	}	return false;}void x86dis::load(ObjectStream &f){	Disassembler::load(f);	opsize = (X86OpSize)GETX_INT32(f, "opsize");	addrsize = (X86AddrSize)GETX_INT32(f, "addrsize");	x86_insns = &x86_32_insns;}ObjectID x86dis::getObjectID() const{	return ATOM_DISASM_X86;}void x86dis::prefixes(){	insn.opsizeprefix = X86_PREFIX_NO;	insn.lockprefix = X86_PREFIX_NO;	insn.repprefix = X86_PREFIX_NO;	insn.segprefix = X86_PREFIX_NO;	insn.rexprefix = 0;	while (codep - ocodep < 15) {		c = getbyte();		switch (c) {		case 0x26:			insn.segprefix = X86_PREFIX_ES;			continue;		case 0x2e:			insn.segprefix = X86_PREFIX_CS;			continue;		case 0x36:			insn.segprefix = X86_PREFIX_SS;			continue;		case 0x3e:			insn.segprefix = X86_PREFIX_DS;			continue;		case 0x64:			insn.segprefix = X86_PREFIX_FS;			continue;		case 0x65:			insn.segprefix = X86_PREFIX_GS;			continue;		case 0x66:			insn.opsizeprefix = X86_PREFIX_OPSIZE;			insn.eopsize = (opsize == X86_OPSIZE16) ? X86_OPSIZE32 : X86_OPSIZE16;			continue;		case 0x67:			insn.eaddrsize = (addrsize == X86_ADDRSIZE16) ? X86_ADDRSIZE32 : X86_ADDRSIZE16;			continue;		case 0xf0:			insn.lockprefix = X86_PREFIX_LOCK;			continue;		case 0xf2:			insn.repprefix = X86_PREFIX_REPNZ;			continue;		case 0xf3:			insn.repprefix = X86_PREFIX_REPZ;			continue;		}		/* no prefix found -> exit loop */		break;	}}static const char *regs(x86dis_insn *insn, int mode, int nr){	if (insn->rexprefix) {		return x86_64regs[mode][nr];	} else {		return x86_regs[mode][nr];	}}void x86dis::str_op(char *opstr, int *opstrlen, x86dis_insn *insn, x86_insn_op *op, bool explicit_params){	const char *cs_default = get_cs(e_cs_default);	const char *cs_number = get_cs(e_cs_number);	const char *cs_symbol = get_cs(e_cs_symbol);		*opstrlen=0;	switch (op->type) {	case X86_OPTYPE_IMM: {		CPU_ADDR a;		filloffset(a, op->imm);		int slen;		char *s=(addr_sym_func) ? addr_sym_func(a, &slen, addr_sym_func_context) : NULL;		if (s) {			memcpy(opstr, s, slen);			opstr[slen] = 0;			*opstrlen = slen;		} else {			char *g = opstr;			strcpy(g, cs_number); g += strlen(cs_number);			switch (op->size) {			case 1:				hexd(&g, 2, options, op->imm);				break;			case 2:				hexd(&g, 4, options, op->imm);				break;			case 4:				hexd(&g, 8, options, op->imm);				break;			case 8:				hexq(&g, 16, options, op->imm);				break;			}			strcpy(g, cs_default); g += strlen(cs_default);		}		break;	}	case X86_OPTYPE_REG: {		int j = -1;		switch (op->size) {		case 1: j = 0; break;		case 2: j = 1; break;		case 4: j = 2; break;		case 8: j = 3; break;		default: {assert(0);}		}		if (!insn->rexprefix) {			sprintf(opstr, x86_regs[j][op->reg]);		} else {			sprintf(opstr, x86_64regs[j][op->reg]);		}		break;	}	case X86_OPTYPE_SEG:		if (x86_segs[op->seg]) {			sprintf(opstr, x86_segs[op->seg]);		}		break;	case X86_OPTYPE_CRX:		sprintf(opstr, "cr%d", op->crx);		break;	case X86_OPTYPE_DRX:		sprintf(opstr, "dr%d", op->drx);		break;	case X86_OPTYPE_STX:		if (op->stx) {			sprintf(opstr, "st%s(%s%d%s)%s", 				cs_symbol, cs_number, op->stx, 				cs_symbol, cs_default);		} else {			strcpy(opstr, "st");		}		break;	case X86_OPTYPE_MMX:		sprintf(opstr, "mm%d", op->mmx);		break;	case X86_OPTYPE_XMM:		sprintf(opstr, "xmm%d", op->xmm);		break;	case X86_OPTYPE_YMM:		sprintf(opstr, "ymm%d", op->ymm);		break;	case X86_OPTYPE_MEM: {		char *d=opstr;		if (explicit_params) {			if (op->mem.floatptr) {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲三级在线免费| 欧美肥妇bbw| 国产欧美日韩三级| 欧美日韩免费在线视频| 精品久久久影院| 91小视频在线观看| 久久99精品国产91久久来源| 国产精品国产三级国产普通话三级| 欧美日韩一区二区不卡| 风间由美一区二区av101| 日本在线不卡视频| 亚洲日本韩国一区| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 国产精品一区二区果冻传媒| 樱花影视一区二区| 久久日韩粉嫩一区二区三区| 欧美日韩在线播| 色狠狠色狠狠综合| 不卡高清视频专区| 国产盗摄精品一区二区三区在线| 肉肉av福利一精品导航| 一区二区免费视频| 亚洲黄色小视频| 国产精品第13页| 国产精品免费aⅴ片在线观看| 综合自拍亚洲综合图不卡区| 国产人久久人人人人爽| 91精品午夜视频| 欧美日韩国产一区二区三区地区| 91激情五月电影| 91小视频在线| 成人一区二区三区中文字幕| 国产精品无遮挡| 高清国产一区二区| 日韩精品在线一区| 色噜噜狠狠色综合中国| 蜜乳av一区二区三区| 一区二区三区四区在线播放| 久久中文娱乐网| 在线观看亚洲专区| 在线看日本不卡| 欧美日韩亚洲综合一区二区三区| 色综合久久中文字幕| 不卡的av在线播放| 欧美日韩高清一区二区不卡| 91精品国产综合久久福利软件| 制服丝袜av成人在线看| 欧美成人a视频| 欧美一区二区视频在线观看2020| 色婷婷精品久久二区二区蜜臂av| 成人黄色软件下载| 国产一区二区在线影院| 韩国av一区二区三区在线观看| 懂色av噜噜一区二区三区av | 久久精品一区二区| 亚洲人吸女人奶水| 久久99精品国产麻豆不卡| 在线国产电影不卡| 国产精品二区一区二区aⅴ污介绍| 欧美韩日一区二区三区| 中文字幕亚洲欧美在线不卡| 一区二区视频在线看| 麻豆专区一区二区三区四区五区| 国产精品一区二区三区99| 色又黄又爽网站www久久| 欧美色涩在线第一页| 一本久久精品一区二区| 欧美亚洲动漫精品| 欧美成人一区二区三区在线观看 | 国产在线播放一区| 成人av网站在线观看免费| 91免费看视频| 日韩一区二区在线观看| 亚洲欧洲三级电影| 美女在线一区二区| 91免费视频网| 久久伊人中文字幕| 亚洲sss视频在线视频| 国产精品系列在线播放| 欧美日韩在线播放三区四区| 26uuu另类欧美亚洲曰本| 亚洲激情欧美激情| 国产成人免费网站| 精品国产制服丝袜高跟| 一区二区三区欧美在线观看| 国产一区二区精品久久91| 91久久精品一区二区| 久久久电影一区二区三区| 亚洲精品videosex极品| av网站免费线看精品| 久久午夜羞羞影院免费观看| 亚洲国产三级在线| 成人美女视频在线观看18| 日韩欧美一区中文| 亚洲国产精品视频| 亚洲精品一区二区在线观看| 亚洲视频一二区| 成人av网址在线观看| 538在线一区二区精品国产| 亚洲国产精品精华液ab| 亚洲乱码中文字幕| 亚洲影院理伦片| 91女人视频在线观看| 精品国产乱码久久久久久牛牛| 国产精品77777| 国产成人精品亚洲日本在线桃色| 激情深爱一区二区| www.日韩大片| 欧美三日本三级三级在线播放| 欧美午夜精品一区二区蜜桃| 激情五月婷婷综合网| 日韩欧美黄色影院| 亚洲人123区| 国产大陆a不卡| 欧美精品久久久久久久多人混战| 亚洲免费观看高清完整版在线 | 欧美最新大片在线看 | 视频一区欧美日韩| 欧美一区二区在线视频| 亚洲欧美一区二区三区极速播放| 风间由美性色一区二区三区| 国产精品欧美一区二区三区| 91亚洲午夜精品久久久久久| 18成人在线观看| 3atv在线一区二区三区| 日韩精品一卡二卡三卡四卡无卡 | 亚洲午夜在线观看视频在线| 欧美一区2区视频在线观看| 国产成人av电影在线播放| 亚洲成av人在线观看| 国产精品久久久久一区| 国产亚洲成av人在线观看导航| 久久只精品国产| 国产精品国产三级国产aⅴ中文| 欧美三级欧美一级| 国产丶欧美丶日本不卡视频| 亚洲精选在线视频| 精品入口麻豆88视频| 在线观看日韩av先锋影音电影院| 国产资源精品在线观看| 天天色图综合网| 国产一区二区三区国产| 国产成人在线观看免费网站| 亚洲综合一二区| 国产精品久久久久三级| 日韩午夜在线观看| 9191久久久久久久久久久| 国产不卡视频在线观看| 六月丁香婷婷色狠狠久久| 91美女片黄在线| 国产欧美一区在线| 国产曰批免费观看久久久| 99视频精品免费视频| www.色精品| youjizz久久| 顶级嫩模精品视频在线看| 国产一区在线看| 国产乱码精品一区二区三区忘忧草 | 亚洲欧美自拍偷拍| 国产精品欧美综合在线| 中文成人综合网| 国产精品久久久爽爽爽麻豆色哟哟| 国产无人区一区二区三区| 久久免费国产精品| 亚洲综合色成人| 免费在线观看一区| 国产精品1区2区| 色噜噜偷拍精品综合在线| 91精品国产综合久久久蜜臀图片 | 国产欧美精品一区| 国产女同性恋一区二区| 一区二区三区**美女毛片| 蜜臀久久99精品久久久久久9| 国产乱人伦精品一区二区在线观看 | 亚洲mv大片欧洲mv大片精品| 舔着乳尖日韩一区| 国产酒店精品激情| 欧美精品日韩精品| 中文字幕一区二区三区乱码在线| 免费观看久久久4p| 在线亚洲人成电影网站色www| 精品国产网站在线观看| 亚洲欧美日韩小说| 丁香啪啪综合成人亚洲小说| 欧美一区二区精品在线| 一区二区三区精品视频在线| 国产精品 欧美精品| 欧美一区二区三区日韩视频| 亚洲人成在线观看一区二区| 国产福利一区在线观看| 日韩三级免费观看| 男人的天堂久久精品| 欧美日韩第一区日日骚| 亚洲乱码国产乱码精品精的特点| 国产一区二区日韩精品| 欧美成va人片在线观看| 美女视频免费一区| 日韩无一区二区| 激情综合五月天| 精品国产电影一区二区|