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

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

?? alphadis.cc

?? 功能較全面的反匯編器:反匯編器ht-2.0.15.tar.gz
?? CC
字號:
/* *	HT Editor *	alphadis.cc * *	Copyright (C) 1999-2002 Sebastian Biallas (sb@biallas.net) * *	This program is free software; you can redistribute it and/or modify *	it under the terms of the GNU General Public License version 2 as *	published by the Free Software Foundation. * *	This program is distributed in the hope that it will be useful, *	but WITHOUT ANY WARRANTY; without even the implied warranty of *	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *	GNU General Public License for more details. * *	You should have received a copy of the GNU General Public License *	along with this program; if not, write to the Free Software *	Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */#include "alphadis.h"#include "alphaopc.h"#include "htdebug.h"#include "tools.h"#include <stdlib.h>#include <string.h>#define BITS_OPC(opcode)		((opcode >> 26) & 0x3f)#define BITS_FFUN(opcode)	((opcode >> 5)  & 0x7ff)#define BITS_IFUN(opcode)	((opcode >> 5)  & 0x7f)#define BITS_MFUN(opcode)	(opcode  & 0xffff)#define BITS_JFUN(opcode)	((opcode >> 14) & 0x3)#define BITS_ISLIT(opcode)	((opcode >> 12) & 0x1)#define BITS_IMMED(opcode)	((opcode >> 13) & 0xff)#define BITS_REGA(opcode)	((opcode >> 21) & 0x1f)#define BITS_REGB(opcode)	((opcode >> 16) & 0x1f)#define BITS_REGC(opcode)	(opcode & 0x1f)#define BITS_BDISP(opcode)	(opcode & 0x1fffff)#define BITS_BSIGN(opcode)	(opcode & 0x100000)#define BITS_MDISP(opcode)	(opcode & 0xffff)#define BITS_MSIGN(opcode)	(opcode & 0x8000)#define BITS_PAL(opcode)		(opcode & 0x3ffffff)#define BITS_HINT(opcode)	(opcode & 0x3fff)/* only needed for assembler.. */#define MAKE_OPC(opcode)		((opcode & 0x3f) << 26)#define MAKE_FFUN(opcode)	((opcode & 0x7ff) << 5)#define MAKE_IFUN(opcode)	((opcode & 0x7f) << 5)#define MAKE_MFUN(opcode)	(opcode & 0xffff)#define MAKE_JFUN(opcode)	((opcode & 0x3) << 14)#define MAKE_LIT			(1<<12)#define MAKE_IMMED(opcode)	((opcode & 0xff)  << 13 )#define MAKE_REGA(opcode)	((opcode & 0x1f) << 21)#define MAKE_REGB(opcode)	((opcode & 0x1f) << 16)#define MAKE_REGC(opcode)	(opcode & 0x1f)#define MAKE_BDISP(opcode)	(opcode & 0x1fffff)#define MAKE_MDISP(opcode)	(opcode & 0xffff)#define MAKE_PAL(opcode)		(opcode & 0x3ffffff)#define MAKE_HINT(opcode)	(opcode & 0x3fff)Alphadis::Alphadis()	:Disassembler(){	insn.valid = false;}int find_alpha_instruction(alpha_opcode_tab_entry *table, int f){	int i=0;	while (f > (table+i)->fcode) i++;	return i;}dis_insn *Alphadis::decode(byte *code, int maxlen, CPU_ADDR addr){	// alpha code instructions must be 32 bits long	if (maxlen < 4) {		// invalid		insn.valid = false;		insn.size = maxlen;		insn.table = 0;		// FIXME: this reads to much bytes!		UNALIGNED_MOVE(insn.data, *(uint32 *)code);	} else {		insn.valid = true;		insn.size = 4;		insn.table = &alpha_instr_tbl[0];		uint32 opcode = *((uint32 *)code);		int idx = BITS_OPC(opcode);		switch (alpha_instr_tbl[idx].type) {			case ALPHA_EXTENSION_10:				idx = find_alpha_instruction(&alpha_instr_tbl_ext10[0], BITS_IFUN(opcode));				insn.table = &alpha_instr_tbl_ext10[0];				break;			case ALPHA_EXTENSION_11:				idx = find_alpha_instruction(&alpha_instr_tbl_ext11[0], BITS_IFUN(opcode));				insn.table = &alpha_instr_tbl_ext11[0];				break;			case ALPHA_EXTENSION_12:				idx = find_alpha_instruction(&alpha_instr_tbl_ext12[0], BITS_IFUN(opcode));				insn.table = &alpha_instr_tbl_ext12[0];				break;			case ALPHA_EXTENSION_13:				idx = find_alpha_instruction(&alpha_instr_tbl_ext13[0], BITS_IFUN(opcode));				insn.table = &alpha_instr_tbl_ext13[0];				break;			case ALPHA_EXTENSION_14:				idx = find_alpha_instruction(&alpha_instr_tbl_ext14[0], BITS_FFUN(opcode));				insn.table = &alpha_instr_tbl_ext14[0];				break;			case ALPHA_EXTENSION_15:				idx = find_alpha_instruction(&alpha_instr_tbl_ext15[0], BITS_FFUN(opcode));				insn.table = &alpha_instr_tbl_ext15[0];				break;			case ALPHA_EXTENSION_16:				idx = find_alpha_instruction(&alpha_instr_tbl_ext16[0], BITS_FFUN(opcode));				insn.table = &alpha_instr_tbl_ext16[0];				break;			case ALPHA_EXTENSION_17:				idx = find_alpha_instruction(&alpha_instr_tbl_ext17[0], BITS_FFUN(opcode));				insn.table = &alpha_instr_tbl_ext17[0];				break;			case ALPHA_EXTENSION_18:				idx = find_alpha_instruction(&alpha_instr_tbl_ext18[0], BITS_MFUN(opcode));				insn.table = &alpha_instr_tbl_ext18[0];				break;			case ALPHA_EXTENSION_1A:				idx = find_alpha_instruction(&alpha_instr_tbl_ext1a[0], BITS_JFUN(opcode));				insn.table = &alpha_instr_tbl_ext1a[0];				break;			case ALPHA_EXTENSION_1C:				idx = find_alpha_instruction(&alpha_instr_tbl_ext1c[0], BITS_IFUN(opcode));				insn.table = &alpha_instr_tbl_ext1c[0];				break;		}		insn.code = idx;		switch ((insn.table+idx)->type) {			case ALPHA_GROUP1:				insn.regA = BITS_REGA(opcode);				insn.regC = BITS_REGC(opcode);				if (BITS_ISLIT(opcode)) {					insn.regB = REG_LIT;					insn.data = BITS_IMMED(opcode);				} else {					insn.regB = BITS_REGB(opcode);					insn.data = 0;				}				break;			case ALPHA_GROUP2:				insn.regA = BITS_REGA(opcode) + REG_FLOAT;				insn.regB = BITS_REGB(opcode) + REG_FLOAT;				insn.regC = BITS_REGC(opcode) + REG_FLOAT;				insn.data = 0;				break;			case ALPHA_GROUP3:				insn.regA = BITS_REGA(opcode);				insn.regB = BITS_REGB(opcode);				insn.regC = REG_ZERO;				insn.data = BITS_MDISP(opcode);				if (BITS_MSIGN(insn.data)) insn.data |= -1 ^ 0xffff;				break;			case ALPHA_GROUP_FLD:				insn.regA = BITS_REGA(opcode) + REG_FLOAT;				insn.regB = BITS_REGB(opcode);				insn.regC = REG_ZERO;				insn.data = BITS_MDISP(opcode);				if (BITS_MSIGN(insn.data)) insn.data |= -1 ^ 0xffff;				break;			case ALPHA_GROUP4:				insn.regA = BITS_REGA(opcode);				insn.regB = BITS_REGB(opcode);				insn.regC = REG_ZERO;				insn.data = BITS_MDISP(opcode);				if (BITS_MSIGN(insn.data)) insn.data |= -1 ^ 0xffff;				break;			case ALPHA_GROUP_FST:				insn.regA = BITS_REGA(opcode) + REG_FLOAT;				insn.regB = BITS_REGB(opcode);				insn.regC = REG_ZERO;				insn.data = BITS_MDISP(opcode);				if (BITS_MSIGN(insn.data)) insn.data |= -1 ^ 0xffff;				break;			case ALPHA_GROUP_F2I:				insn.regA = BITS_REGA(opcode) + REG_FLOAT;				insn.regB = REG_ZERO;				insn.regC = BITS_REGC(opcode);				insn.data = 0;				break;			case ALPHA_GROUP_I2F:				insn.regA = BITS_REGA(opcode);				insn.regB = REG_ZERO;				insn.regC = BITS_REGC(opcode) + REG_FLOAT;				insn.data = 0;				break;			case ALPHA_GROUP_BRA:				insn.regA = BITS_REGA(opcode);				insn.regB = REG_ZERO;				insn.regC = REG_ZERO;				insn.data = BITS_BDISP(opcode);				if (BITS_BSIGN(insn.data)) insn.data |= -1 ^ 0x1fffff;				insn.data += 1;				insn.data *= 4;				insn.data += addr.addr32.offset;				break;			case ALPHA_GROUP_FBR:				insn.regA = BITS_REGA(opcode) + REG_FLOAT;				insn.regB = REG_ZERO;				insn.regC = REG_ZERO;				insn.data = BITS_BDISP(opcode);				if (BITS_BSIGN(insn.data)) insn.data |= -1 ^ 0x1fffff;				insn.data += 1;				insn.data *= 4;				insn.data += addr.addr32.offset;				break;			case ALPHA_GROUP_JMP:				insn.regA = BITS_REGA(opcode);				insn.regB = BITS_REGB(opcode);				insn.regC = REG_ZERO;				insn.data = BITS_HINT(opcode);				break;			case ALPHA_GROUP_PAL:				insn.regA = REG_ZERO;				insn.regB = REG_ZERO;				insn.regC = REG_ZERO;				insn.data = BITS_PAL(opcode);				break;			default:				insn.valid = false;				insn.data = *(uint32 *)code;				break;		}	}	return &insn;}dis_insn *Alphadis::duplicateInsn(dis_insn *disasm_insn){	alphadis_insn *insn = ht_malloc(sizeof (alphadis_insn));	*insn = *(alphadis_insn *)disasm_insn;	return insn;}void Alphadis::getOpcodeMetrics(int &min_length, int &max_length, int &min_look_ahead, int &avg_look_ahead, int &addr_align){	min_length = 4;	max_length = 4;	min_look_ahead = 4;	avg_look_ahead = 4;	addr_align = 4;}const char *Alphadis::getName(){	return "alpha/disassembler";}byte	Alphadis::getSize(dis_insn *disasm_insn){	return ((alphadis_insn*)disasm_insn)->size;}ObjectID Alphadis::getObjectID() const{	return ATOM_DISASM_ALPHA;}const char *Alphadis::str(dis_insn *disasm_insn, int style){	return strf(disasm_insn, style, "");}#define A_REG_A alpha_reg_names[alpha_insn->regA]#define A_REG_B alpha_reg_names[alpha_insn->regB]#define A_REG_C alpha_reg_names[alpha_insn->regC]#define A_NAME (alpha_insn->table+alpha_insn->code)->nameconst char *Alphadis::strf(dis_insn *disasm_insn, int style, const char *format){	if (style & DIS_STYLE_HIGHLIGHT) enable_highlighting();		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);	alphadis_insn *alpha_insn = (alphadis_insn *) disasm_insn;		if (!alpha_insn->valid) {		is_invalid:		switch (alpha_insn->size) {			case 1:				strcpy(insnstr, "db         ?");				break;			case 2:				strcpy(insnstr, "dw         ?");				break;			case 3:				strcpy(insnstr, "db         ? * 3");				break;			case 4:				sprintf(insnstr, "dd         %s0x%08x", cs_number, alpha_insn->data);				break;			default: { /* braces for empty assert */				assert(0);			}		}	} else switch ((alpha_insn->table+alpha_insn->code)->type) {		case ALPHA_GROUP1:		case ALPHA_GROUP2:			if (alpha_insn->regB != REG_LIT)				sprintf(insnstr, "%-10s %s%s,%s %s%s,%s %s", A_NAME, A_REG_A, cs_symbol, cs_default, A_REG_B, cs_symbol, cs_default, A_REG_C);			else				sprintf(insnstr, "%-10s %s%s,%s %s0x%x%s,%s %s", A_NAME, A_REG_A, cs_symbol, cs_default, cs_number, alpha_insn->data, cs_symbol, cs_default, A_REG_C);			break;		case ALPHA_GROUP3:		case ALPHA_GROUP_FLD:		case ALPHA_GROUP4:		case ALPHA_GROUP_FST: {			short sdata = (short)(alpha_insn->data&0xffff);			char c;			if (sdata<0) {				c = '-';				sdata = -sdata;			} else {				c = '+';			}			sprintf(insnstr, "%-10s %s%s, [%s%s%s%c%s0x%x%s]", A_NAME, A_REG_A, cs_symbol, cs_default, A_REG_B, cs_symbol, c, cs_number, sdata, cs_symbol);			break;		}		case ALPHA_GROUP_I2F:		case ALPHA_GROUP_F2I:			sprintf(insnstr, "%-10s %s%s,%s %s", A_NAME, A_REG_A, cs_symbol, cs_default, A_REG_C);			break;		case ALPHA_GROUP_BRA:		case ALPHA_GROUP_FBR: {			CPU_ADDR caddr;			caddr.addr32.offset = (uint32)alpha_insn->data;			int slen;			char *p;			char *s = (addr_sym_func) ? addr_sym_func(caddr, &slen, addr_sym_func_context) : 0;			if (s) {				p = insnstr+sprintf(insnstr, "%-10s %s%s,%s ", A_NAME, A_REG_A, cs_symbol, cs_default);				memmove(p, s, slen);				p[slen] = 0;			} else {				sprintf(insnstr, "%-10s %s%s, %s0x%x", A_NAME, A_REG_A, cs_symbol, cs_number, (uint32)alpha_insn->data);			}			break;		}		case ALPHA_GROUP_JMP: {			CPU_ADDR caddr;			caddr.addr32.offset = (uint32)alpha_insn->data;			int slen;			char *s = (addr_sym_func) ? addr_sym_func(caddr, &slen, addr_sym_func_context) : 0;			if (s) {				char *p = insnstr + sprintf(insnstr, "%-10s %s %s(%s%s%s),%s ", A_NAME, A_REG_A, cs_symbol, cs_default, A_REG_B, cs_symbol, cs_default);				memmove(p, s, slen);				p[slen] = 0;			} else {				sprintf(insnstr, "%-10s %s %s(%s%s%s), %s0x%x", A_NAME, A_REG_A, cs_symbol, cs_default, A_REG_B, cs_symbol, cs_number, (uint32)alpha_insn->data);			}			break;		}		case ALPHA_GROUP_PAL:			sprintf(insnstr, "%-10s %s0x%08x", A_NAME, cs_number, alpha_insn->data);			break;		default:			goto is_invalid;	}	disable_highlighting();	return insnstr;     }bool	Alphadis::validInsn(dis_insn *disasm_insn){	return ((alphadis_insn *)disasm_insn)->valid;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩一级片网站| 日韩三级精品电影久久久| 久久精品国产99| 艳妇臀荡乳欲伦亚洲一区| 久久先锋影音av鲁色资源网| 欧美性生活影院| 国产99一区视频免费| 狂野欧美性猛交blacked| 17c精品麻豆一区二区免费| 欧美第一区第二区| 91福利国产成人精品照片| 成人av在线影院| 国模一区二区三区白浆| 日本欧美在线观看| 亚洲国产精品久久久久婷婷884 | 亚洲精品国产视频| 国产欧美一区二区三区在线老狼 | 国产精品不卡视频| 精品免费一区二区三区| 欧美日韩一级二级| 欧美体内she精高潮| 91福利视频在线| 97超碰欧美中文字幕| 成人性生交大片免费看视频在线| 免费精品视频在线| 五月综合激情网| 一区二区三区**美女毛片| ●精品国产综合乱码久久久久 | 久久综合色综合88| 欧美第一区第二区| 欧美不卡在线视频| 欧美大度的电影原声| 欧美一卡2卡三卡4卡5免费| 7777精品伊人久久久大香线蕉的 | 欧美一区日本一区韩国一区| 欧美日韩免费不卡视频一区二区三区| 97国产一区二区| 色先锋久久av资源部| 99综合电影在线视频| av一二三不卡影片| 成人av在线网站| 成人av网站大全| 91丝袜国产在线播放| 91丝袜高跟美女视频| 色综合一个色综合亚洲| 色婷婷一区二区三区四区| 日本久久一区二区| 欧美三级韩国三级日本三斤| 欧美日韩1234| 日韩一区二区免费视频| 精品久久国产字幕高潮| 久久精品在线观看| 国产精品免费久久久久| 亚洲视频图片小说| 亚洲国产sm捆绑调教视频| 婷婷久久综合九色综合伊人色| 日日夜夜一区二区| 精品一二三四在线| 成人免费视频网站在线观看| 91免费版在线| 欧美影院午夜播放| 欧美一区二区三区白人| 久久久精品影视| 亚洲欧美国产三级| 视频一区视频二区在线观看| 国产在线视视频有精品| 成人av网站大全| 欧美精品一二三| 久久综合狠狠综合久久激情 | 蜜桃视频在线一区| 韩国女主播一区二区三区| proumb性欧美在线观看| 欧美综合亚洲图片综合区| 欧美一区二区视频网站| 久久综合久久鬼色中文字| 亚洲婷婷综合色高清在线| 亚州成人在线电影| 国产精品 日产精品 欧美精品| 91视视频在线观看入口直接观看www | 色偷偷久久一区二区三区| 欧美高清视频不卡网| 精品欧美黑人一区二区三区| 亚洲日本在线观看| 日一区二区三区| 99国产精品一区| 欧美成人女星排名| 亚洲天堂精品在线观看| 蜜臀av一区二区在线观看| 91小视频在线免费看| 欧美成人精品高清在线播放 | 日本视频在线一区| 国产一区二区精品久久91| 欧美伊人久久久久久午夜久久久久| 精品sm在线观看| 亚洲无线码一区二区三区| 风间由美一区二区av101| 欧美精品v国产精品v日韩精品| 国产精品久久三| 久久99久久99小草精品免视看| 一本一本大道香蕉久在线精品 | 欧美日韩高清在线播放| 国产午夜亚洲精品不卡| 日本美女一区二区三区视频| 99久久99久久综合| 久久久久久久电影| 午夜精品一区二区三区免费视频 | 国产女人18毛片水真多成人如厕| 日韩av一二三| 91国产视频在线观看| 国产精品国产馆在线真实露脸| 精品一区二区久久| 在线不卡免费欧美| 亚洲精品国产第一综合99久久| 国产剧情一区在线| 欧美成人性战久久| 欧美a级理论片| 欧美日韩成人一区| 亚洲一区二区三区影院| 99re视频这里只有精品| 国产精品丝袜黑色高跟| 国产伦精品一区二区三区免费 | 国产情人综合久久777777| 久久电影网站中文字幕| 7799精品视频| 三级在线观看一区二区| eeuss鲁片一区二区三区在线观看| 精品福利av导航| 麻豆91精品视频| 欧美一级国产精品| 日韩成人一级大片| 91精品国产综合久久久蜜臀粉嫩| 亚洲成人免费看| 欧美日韩情趣电影| 偷拍日韩校园综合在线| 欧美日韩高清一区二区三区| 亚洲一本大道在线| 欧美天天综合网| 丝瓜av网站精品一区二区| 欧美日韩二区三区| 婷婷成人激情在线网| 在线成人午夜影院| 日本不卡的三区四区五区| 欧美日韩情趣电影| 麻豆视频观看网址久久| wwwwww.欧美系列| 国产91丝袜在线18| 国产精品色噜噜| 成人的网站免费观看| 亚洲三级在线播放| 欧美日韩一区中文字幕| 蜜臀av一区二区在线观看| 久久亚洲捆绑美女| av不卡免费在线观看| 奇米综合一区二区三区精品视频| 欧美成人三级在线| 国产在线视频一区二区三区| 欧美一区二区三区四区久久| 日日欢夜夜爽一区| 欧美成人国产一区二区| 国产传媒久久文化传媒| 国产精品日日摸夜夜摸av| 99精品视频在线免费观看| 亚洲福中文字幕伊人影院| 欧美成人欧美edvon| 成人av在线网站| 舔着乳尖日韩一区| 久久九九99视频| 欧美在线观看视频在线| 日韩成人伦理电影在线观看| 久久亚洲二区三区| 日本道色综合久久| 久久精品国产在热久久| 18欧美乱大交hd1984| 4hu四虎永久在线影院成人| 国产激情视频一区二区三区欧美 | 91精品欧美福利在线观看| 久久成人18免费观看| 国产精品久久久久久久久动漫 | 国产 日韩 欧美大片| 亚洲激情中文1区| 欧美tickling挠脚心丨vk| 国产精品不卡一区二区三区| 欧美国产一区视频在线观看| 日产国产高清一区二区三区| 亚洲v日本v欧美v久久精品| 国产精品网曝门| 亚洲丶国产丶欧美一区二区三区| 午夜激情一区二区| 国产一区二区三区在线观看免费 | 激情欧美一区二区三区在线观看| 色综合久久中文综合久久97| 亚洲欧美日韩小说| 91麻豆精品国产无毒不卡在线观看| 成人激情免费视频| 免费成人美女在线观看| 中文字幕欧美一| 久久你懂得1024| 欧美精品一级二级| 一本色道亚洲精品aⅴ| 国产91精品免费|