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

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

?? inst1.c

?? m68k系列反匯編的C語言源碼,供學習編譯原理的同學使用。實用!
?? C
字號:
/* *                 Author:  Christopher G. Phillips *              Copyright (C) 1994 All Rights Reserved * *                              NOTICE * * Permission to use, copy, modify, and distribute this software and * its documentation for any purpose and without fee is hereby granted * provided that the above copyright notice appear in all copies and * that both the copyright notice and this permission notice appear in * supporting documentation. * * The author makes no representations about the suitability of this * software for any purpose.  This software is provided ``as is'' * without express or implied warranty. *//* * This file contains the functions called based on the high nibble * of the potentially valid instruction word.  Most of these call * functions in file inst2.c based on the remaining bits. */#include <stdio.h>#include <stdlib.h>#include "dis.h"voidbit_movep_immediate(m68kword inst){	if (inst == 0x003c)		biti_reg("ORI", BYTE, "CCR");	/* 0000 0000 0011 1100 */	else if (inst == 0x007c)		biti_reg("ORI", WORD, "SR");	/* 0000 0000 0111 1100 */	else if ((inst & 0xff00) == 0x0600)		biti_size("ADDI", inst);	/* 0000 0110 ---- ---- */	else if ((inst & 0xf9c0) == 0x00c0) {		if (CPU(chip) >= MC68020)			cmp2_chk2(inst);	/* 0000 0--0 11-- ---- */	} else if ((inst & 0xff00) == 0)		biti_size("ORI", inst);		/* 0000 0000 ---- ---- */	else if (inst == 0x023c)		biti_reg("ANDI", BYTE, "CCR");	/* 0000 0010 0011 1100 */	else if (inst == 0x027c)		biti_reg("ANDI", WORD, "SR");	/* 0000 0010 0111 1100 */	else if ((inst & 0xff00) == 0x0200)		biti_size("ANDI", inst);	/* 0000 0010 ---- ---- */	else if ((inst & 0xff00) == 0x0400)		biti_size("SUBI", inst);	/* 0000 0100 ---- ---- */	else if ((inst & 0x0138) == 0x0108)		movep(inst);			/* 0000 ---1 --00 1--- */	else if (inst & 0x0100)		bit_dynamic(inst);		/* 0000 ---1 ---- ---- */	else if ((inst & 0xff00) == 0x0800)		bit_static(inst);		/* 0000 1000 ---- ---- */	else if ((inst & 0xfdff) == 0x0cfc) {		if (CPU(chip) >= MC68020)			cas2(inst);		/* 0000 11-0 1111 1100 */	} else if ((inst & 0xf9c0) == 0x08fc) {		if (CPU(chip) >= MC68020)			cas(inst);		/* 0000 1--0 11-- ---- */	} else if (inst == 0x0a3c)		biti_reg("EORI", BYTE, "CCR");	/* 0000 1010 0011 1100 */	else if (inst == 0x0a7c)		biti_reg("EORI", WORD, "SR");	/* 0000 1010 0111 1100 */	else if ((inst & 0xff00) == 0x0a00)		biti_size("EORI", inst);	/* 0000 1010 ---- ---- */	else if ((inst & 0xff00) == 0x0c00)		biti_size("CMPI", inst);	/* 0000 1100 ---- ---- */	else if ((inst & 0x0e00) == 0x0e00) {		if (CPU(chip) >= MC68010)			moves(inst);		/* 0000 1110 ---- ---- */	}		}voidmovebyte(m68kword inst){	move(inst, BYTE);			/* 0001 ---- ---- ---- */}voidmovelong(m68kword inst){	move(inst, LONGWORD);			/* 0010 ---- ---- ---- */}voidmoveword(m68kword inst){	move(inst, WORD);			/* 0011 ---- ---- ---- */}voidmisc(m68kword inst){	if (CPU(chip) >= MC68020 && (inst & 0x0140) == 0x0100	  || CPU(chip) < MC68020 && (inst & 0x01c0) == 0x0180)		chk(inst);			/* 0100 ---1 ?0-- ---- */	else if ((inst & 0x0ff8) == 0x09c0) {		if (CPU(chip) >= MC68020)			ext(inst);	/* extb /* 0100 1001 1100 0--- */	} else if ((inst & 0x01c0) == 0x01c0)		lea(inst);			/* 0100 ---1 11-- ---- */	else		switch ((inst >> 8) & 0xf) {		case 0:			if ((inst & 0x00c0) == 0x00c0)/* 0100 0000 11-- ---- */	movereg(inst, "SR", FROM);			else/* 0100 0000 ---- ---- */	misc_size("NEGX", inst);			break;		case 2:			if ((inst & 0x00c0) == 0x00c0) {				if (CPU(chip) >= MC68010)/* 0100 0010 11-- ---- */		movereg(inst, "CCR", FROM);			} else/* 0100 0010 ---- ---- */	misc_size("CLR", inst);			break;		case 4:			if ((inst & 0x00c0) == 0x00c0)/* 0100 0100 11-- ---- */	movereg(inst, "CCR", TO);			else/* 0100 0100 ---- ---- */	misc_size("NEG", inst);			break;		case 6:			if ((inst & 0x00c0) == 0x00c0)/* 0100 0110 11-- ---- */	movereg(inst, "SR", TO);			else/* 0100 0110 ---- ---- */	misc_size("NOT", inst);			break;		case 8:			if ((inst & 0x00f8) == 0x0008) {/* 0100 1000 0000 1--- */	link(inst, LONGWORD);				flags |= ISLINK;			} else if ((inst & 0x00c0) == 0)/* 0100 1000 00-- ---- */	misc_ea("NBCD", inst, BYTE);			else if ((inst & 0x00f8) == 0x0040)/* 0100 1000 0100 0--- */	swap(inst);			else if ((inst & 0x00f8) == 0x0048) {				if (CPU(chip) >= MC68010)/* 0100 1000 0100 1--- */		bkpt(inst);			} else if ((inst & 0x00c0) == 0x0040)/* 0100 1000 01-- ---- */	misc_ea("PEA", inst, LONGWORD);			else if ((inst & 0x00b8) == 0x0080)/* 0100 1000 1-00 0--- */	ext(inst);			else if ((inst & 0x0080) == 0x0080)/* 0100 1000 1--- ---- */	movem(inst, FROM);			break;		case 10:			if (inst == 0x4afc) {/* 0100 1010 1111 1100 */	instprint(ops2f(0), "ILLEGAL");				valid = 1;			} else if ((inst & 0x00c0) == 0x00c0)/* 0100 1010 11-- ---- */	misc_ea("TAS", inst, BYTE);			else/* 0100 1010 ---- ---- */	misc_size("TST", inst);			break;		case 12:			if ((inst & 0x00c0) == 0) {				if (CPU(chip) >= MC68020)/* 0100 1100 00-- ---- */		op2long("MUL", inst);			} else if ((inst & 0x00c0) == 0x0040) {				if (CPU(chip) >= MC68020)/* 0100 1100 01-- ---- */		op2long("DIV", inst);			} else/* 0100 1100 1--- ---- */	movem(inst, TO);			break;		case 14:			switch ((inst >> 4) & 0xf) {			case 4:/* 0100 1110 0100 ---- */	trap(inst);				break;			case 5:				if (inst & 8) {/* 0100 1110 0101 1--- */		unlk(inst);					flags |= ISUNLK;				} else {/* 0100 1110 0101 0--- */		link(inst, WORD);					flags |= ISLINK;				}				break;			case 6:				if (inst & 8)/* 0100 1110 0110 1--- */		moveusp(inst, FROM);				else/* 0100 1110 0110 0--- */		moveusp(inst, TO);				break;			case 7:				switch (inst & 0xf) {				case 0:/* 0100 1110 0111 0000 */		instprint(ops2f(0), "RESET");					valid = 1;					break;				case 1:/* 0100 1110 0111 0001 */		instprint(ops2f(0), "NOP");					valid = 1;					break;				case 2:/* 0100 1110 0111 0010 */		stop_rtd("STOP");					break;				case 3:/* 0100 1110 0111 0011 */		instprint(ops2f(0), "RTE");					flags |= ISRTS;					valid = 1;					break;				case 4:					if (CPU(chip) >= MC68010) {/* 0100 1110 0111 0100 */			stop_rtd("RTD");						flags |= ISRTS;						valid = 1;					}					break;				case 5:/* 0100 1110 0111 0101 */		instprint(ops2f(0), "RTS");					flags |= ISRTS;					valid = 1;					break;				case 6:/* 0100 1110 0111 0110 */		instprint(ops2f(0), "TRAPV");					valid = 1;					break;				case 7:/* 0100 1110 0111 0111 */		instprint(ops2f(0), "RTR");					flags |= ISRTS;					valid = 1;					break;				default:					if ((inst & 0xe) == 0xa					  && CPU(chip) >= MC68010)/* 0100 1110 0111 101- */			movec(inst & 1);					break;				}				break;			default:				pcrelative = 1;				if (inst & 0x0040) {/* 0100 1110 11-- ---- */		misc_ea("JMP", inst, 0);					flags |= ISJMP;				} else {/* 0100 1110 10-- ---- */		misc_ea("JSR", inst, 0);					flags |= ISJSR;				}				pcrelative = 0;				break;			}			break;#ifdef __alpha		/* Stupid DEC compiler */		case 15:			break;#endif		}}voidaddq_subq_scc_dbcc_trapcc(m68kword inst){	if ((inst & 0x00c0) == 0x00c0) {		if ((inst & 0x0038) == 0x0008) {			dbcc(inst);		/* 0101 ---- 1100 1--- */			flags |= ISDBcc;		} else if ((inst & 0x0038) == 0x0038		  && 2 <= (inst & 7) && (inst & 7) <= 4) {			if (CPU(chip) >= MC68020)				trapcc(inst);	/* 0101 ---- 1111 1--- */		} else			scc(inst);		/* 0101 ---- 11-- ---- */	} else		addq_subq(inst);		/* 0101 ---- ---- ---- */}intbcc_bsr(m68kword inst){	long		value;	int		condition = (inst >> 8) & 0xf;	char		*cp;	m68kaddr	savedpc;	int		failure = 0;	savedpc = pc;	if ((value = signextend(inst & 0xff, 8)) == 0)		value = getval(WORD, &failure);	else if (CPU(chip) >= MC68020 && value == -1)		value = getval(LONGWORD, &failure);	if (failure)		return 0;	if (onepass != INCONSISTENT	  && (value < 0 && -value > savedpc - initialpc	  || value > 0 && value + savedpc > initialpc + maxoffset	  || !odd && value & 1))		return 0;	switch (condition) {	case 0:		cp = "RA";		/* 0110 0000 ---- ---- */		flags |= ISBRA;		break;	case 1:		cp = "SR";		/* 0110 0001 ---- ---- */		flags |= ISBSR;		break;	default:		cp = cc[condition];	/* 0110 ---- ---- ---- */		flags |= ISBRcc;		break;	}	sprintf(buf1, "B%s", cp);	if (pass == FIRSTPASS && onepass != INCONSISTENT) {		required[flags & 3] = value + savedpc;		flags++;	} else if (pass == LASTPASS && value + savedpc >= initialpc	  && value + savedpc <= initialpc + maxoffset	  && insts[value + savedpc - initialpc].labelnum)		sprintf(buf2, "L%d",		  insts[value + savedpc - initialpc].labelnum);	else /* if (pass == DEBUGPASS	  || value + savedpc > initialpc + maxoffset) */		/* immsprintf(buf2, value); */		sprintf(buf2, "%lx", (long)(value + savedpc));	instprint(ops2f(1), buf1, buf2);	return 1;}voidmoveq(m68kword inst)	/* 0111 ---0 ---- ---- */{	int	reg = (inst >> 9) & 7;	int	value;	if (inst & 0x0100)		return;	value = signextend(inst & 0xff, 8);	sprintf(buf1, "%d", value);	sprintf(buf2, "D%d", reg);	instprint(ops2f(2) | sharp2f(1), "MOVEQ", buf1, buf2);	valid = 1;}voidor_div_sbcd(m68kword inst){	if ((inst & 0x01f0) == 0x0100)		opx("SBCD", inst, 4, 0);	/* 1000 ---1 0000 ---- */	else if ((inst & 0x01f0) == 0x0140)		pack_unpk("PACK", inst);	/* 1000 ---1 0100 ---- */	else if ((inst & 0x01f0) == 0x0180)		pack_unpk("UNPK", inst);	/* 1000 ---1 1000 ---- */	else if ((inst & 0x00c0) == 0x00c0)		op2("DIV", inst);		/* 1000 ---- 11-- ---- */	else		op1("OR", inst);		/* 1000 ---- ---- ---- */}voidsub_subx(m68kword inst){	if ((inst & 0x00c0) == 0x00c0)		opa("SUBA", inst);		/* 1001 ---- 11-- ---- */	else if ((inst & 0x0130) == 0x0100)		opx("SUBX", inst, 4, 1);	/* 1001 ---1 --00 ---- */	else		op1("SUB", inst);		/* 1001 ---- ---- ---- */}voidunimplemented(m68kword inst){	instprint(ops2f(0), "UNIMPLEMENTED");	/* 1010 ---- ---- ---- */}voidcmp_eor(m68kword inst){	if ((inst & 0x00c0) == 0x00c0)		opa("CMPA", inst);		/* 1011 ---- 11-- ---- */	else if ((inst & 0x0100) == 0)		op1("CMP", inst);		/* 1011 ---0 ---- ---- */	else if ((inst & 0x0038) == 8)		opx("CMPM", inst, 3, 1);	/* 1011 ---1 --00 1--- */	else		op1("EOR", inst);		/* 1011 ---1 ---- ---- */}voidand_mul_abcd_exg(m68kword inst){	if ((inst & 0x00c0) == 0x00c0)		op2("MUL", inst);		/* 1100 ---- 11-- ---- */	else if ((inst & 0x01f0) == 0x0100)		opx("ABCD", inst, 4, 0);	/* 1100 ---1 0000 ---- */	else		switch (inst & 0x01f8) {		case 0x0140:			exg(inst, 'D', 'D');	/* 1100 ---1 0100 0--- */			break;		case 0x0148:			exg(inst, 'A', 'A');	/* 1100 ---1 0100 1--- */			break;		case 0x0188:			exg(inst, 'D', 'A');	/* 1100 ---1 1000 1--- */			break;		default:			op1("AND", inst);	/* 1100 ---- ---- ---- */		}}voidadd_addx(m68kword inst){	if ((inst & 0x00c0) == 0x00c0)		opa("ADDA", inst);		/* 1101 ---- 11-- ---- */	else if ((inst & 0x0130) == 0x0100)		opx("ADDX", inst, 4, 1);	/* 1101 ---1 --00 ---- */	else		op1("ADD", inst);		/* 1101 ---- ---- ---- */}voidshift_rotate_bitfield(m68kword inst){	if ((inst & 0x08c0) == 0x08c0) {		if (CPU(chip) >= MC68020)			bitfield(inst);		/* 1110 1--- 11-- ---- */	} else		shift(inst);			/* 1110 ---- ---- ---- */}/* * Coprocessor support.  Currently only the PMMU and FPU available. */struct cp	coproc[] = {	{ "P",	pgen, pcc },	{ "F",	fgen, fcc },};#define NCP	(sizeof coproc / sizeof coproc[0])voidcoprocessor(m68kword inst){	int		num = (inst >> 9) & 7;	struct cp	*cpptr;	const char	*prefix;	if (num >= NCP || !coproc[num].prefix)		return;	cpptr = &coproc[num];	prefix = cpptr->prefix;	if (num == 0 && PMMU(chip) != MC68851	  && (CPU(chip) < MC68030 || ((inst >> 6) & 7)))		return;	if (num == 1 && !FPU(chip))		return;		switch ((inst >> 6) & 7) {	case 0:		(*cpptr->gen)(inst);	/* 1111 num0 00-- ---- */		if (valid && num == 1)			flags |= ISFPU;		break;	case 1:		if ((inst & 0x0038) == 0x0038)			cptrapcc(cpptr, inst);	/* 1111 num0 0111 1--- */		else if ((inst & 0x0038) == 0x0008)			cpdbcc(cpptr, inst);	/* 1111 num0 0100 1--- */		else			cpscc(cpptr, inst);	/* 1111 num0 01-- ---- */		break;	case 2:	case 3:		cpbcc(cpptr, inst);		/* 1111 num0 1--- ---- */		break;	case 4:		cpsave(prefix, inst);		/* 1111 num1 00-- ---- */		break;	case 5:		cprestore(prefix, inst);	/* 1111 num1 01-- ---- */		break;	}}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一色哟哟哟| 欧美一二三四区在线| 欧美日韩夫妻久久| 欧美激情艳妇裸体舞| 美女国产一区二区| 欧美日韩在线播| 自拍偷自拍亚洲精品播放| 久久爱另类一区二区小说| 欧美丝袜第三区| 亚洲精品一二三区| aaa欧美色吧激情视频| 国产日韩一级二级三级| 久久精品久久99精品久久| 欧美日韩精品系列| 一区二区三区中文字幕| 91免费版在线| 日韩毛片在线免费观看| 丁香网亚洲国际| 国产日韩欧美一区二区三区乱码| 日本亚洲最大的色成网站www| 色网站国产精品| 亚洲欧美一区二区在线观看| 国产精品亚洲一区二区三区妖精| 欧美zozozo| 久久精品国产免费| 日韩一级二级三级精品视频| 婷婷丁香久久五月婷婷| 欧美福利一区二区| 男人操女人的视频在线观看欧美| 欧美日韩一区二区三区视频| 亚洲午夜精品网| 欧美亚州韩日在线看免费版国语版| 亚洲免费在线视频一区 二区| 97aⅴ精品视频一二三区| 亚洲欧洲成人自拍| 91久久精品一区二区三区| 亚洲精品欧美综合四区| 欧洲一区二区三区免费视频| 亚洲午夜电影在线观看| 欧美日本国产一区| 免费一级片91| 久久久久99精品国产片| 成人a区在线观看| 亚洲美女在线一区| 欧美美女一区二区| 国产伦精品一区二区三区免费迷| 久久久久一区二区三区四区| 国产a精品视频| 亚洲天堂免费看| 欧美日韩精品三区| 国内久久婷婷综合| 最新欧美精品一区二区三区| 欧美在线制服丝袜| 久久福利资源站| 最新久久zyz资源站| 欧美午夜理伦三级在线观看| 美女在线视频一区| 中文字幕乱码一区二区免费| 在线观看成人免费视频| 久久超级碰视频| 亚洲日本在线视频观看| 91精品午夜视频| 成人午夜电影久久影院| 亚洲国产三级在线| 国产欧美日韩综合精品一区二区| 一本到高清视频免费精品| 美女一区二区三区在线观看| 国产精品美日韩| 91精品国产91久久综合桃花| 成人av网在线| 激情偷乱视频一区二区三区| 亚洲三级视频在线观看| 精品人伦一区二区色婷婷| 91麻豆蜜桃一区二区三区| 老司机精品视频一区二区三区| 中文字幕一区二区三区蜜月| 欧美xxxx老人做受| 欧美色爱综合网| 成人性生交大片免费看视频在线| 日韩制服丝袜av| 亚洲精品乱码久久久久久日本蜜臀| 日韩欧美亚洲国产另类| 欧美视频一区二区三区在线观看| 国产99久久久国产精品潘金| 男男成人高潮片免费网站| 亚洲色图在线播放| 欧美国产欧美亚州国产日韩mv天天看完整 | 亚洲国产日产av| 中文字幕va一区二区三区| 7777精品伊人久久久大香线蕉经典版下载 | 成人激情文学综合网| 日韩黄色一级片| 亚洲日本乱码在线观看| 久久久久久久久久看片| 91精品久久久久久久91蜜桃| 91在线免费看| a级高清视频欧美日韩| 国产一区二区在线视频| 久久精品国产亚洲5555| 日韩精品一级中文字幕精品视频免费观看 | 国产欧美日韩在线| www亚洲一区| 精品少妇一区二区三区免费观看| 欧美日韩一区不卡| 91精品1区2区| 在线日韩一区二区| 91免费版pro下载短视频| 99视频一区二区| 国产成人高清在线| 精品一区在线看| 美女精品自拍一二三四| 青青草一区二区三区| 日韩成人一区二区三区在线观看| 亚洲国产欧美在线人成| 亚洲妇熟xx妇色黄| 天天av天天翘天天综合网色鬼国产| 亚洲一区二区偷拍精品| 亚洲三级在线免费观看| 一区二区在线观看不卡| 一个色综合av| 日韩精品午夜视频| 蜜桃一区二区三区在线| 激情综合网av| 国产大片一区二区| 99久久精品免费看国产| 欧洲视频一区二区| 欧美一级二级在线观看| 精品久久国产字幕高潮| 欧美国产综合一区二区| 亚洲欧洲三级电影| 亚洲高清三级视频| 国产主播一区二区三区| 国产成人精品一区二| 99热在这里有精品免费| 欧美视频第二页| 精品久久久久av影院| 亚洲欧洲av另类| 婷婷中文字幕综合| 国产剧情一区二区三区| 色网站国产精品| 日韩欧美中文一区| 中文成人av在线| 婷婷成人综合网| 成人污污视频在线观看| 欧美色综合网站| 国产亚洲欧美一区在线观看| 亚洲精品乱码久久久久久日本蜜臀| 午夜久久久久久久久久一区二区| 麻豆精品在线播放| 91网站最新地址| 欧美videofree性高清杂交| 国产精品久久久久aaaa樱花| 天堂精品中文字幕在线| 成人免费看视频| 日韩免费成人网| 樱桃视频在线观看一区| 国内精品写真在线观看 | 国产jizzjizz一区二区| 欧美在线|欧美| 日本一区二区三区免费乱视频| 亚洲一区在线观看视频| 国产精品一卡二卡| 欧美日韩国产美| 亚洲欧美日韩国产中文在线| 久久国产综合精品| 欧美日韩国产精品自在自线| 中文久久乱码一区二区| 久久99精品国产.久久久久久| 色噜噜狠狠一区二区三区果冻| 国产婷婷色一区二区三区在线| 亚洲va国产va欧美va观看| 97久久精品人人澡人人爽| 亚洲精品在线三区| 视频一区中文字幕国产| 91国在线观看| 国产精品久久看| 国产精品一区在线观看乱码 | 国产亚洲成av人在线观看导航| 五月天中文字幕一区二区| 91视视频在线观看入口直接观看www| ww亚洲ww在线观看国产| 欧美aⅴ一区二区三区视频| 欧美性受xxxx黑人xyx| 亚洲精品中文在线| 91美女片黄在线观看| 国产精品麻豆视频| 国产成人免费网站| 久久亚洲综合av| 精品亚洲国产成人av制服丝袜 | 欧美日本乱大交xxxxx| 亚洲精品国产品国语在线app| 成人av在线一区二区| 国产精品国产三级国产a | 这里只有精品免费| 亚洲成年人影院| 欧美精品免费视频| 日韩和欧美的一区| 正在播放亚洲一区| 精品无码三级在线观看视频| xnxx国产精品|