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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? inst2.c

?? m68k系列反匯編的C語(yǔ)言源碼,供學(xué)習(xí)編譯原理的同學(xué)使用。實(shí)用!
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/* *                 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. *//* * Most of the functions that determine whether an instruction is valid * and then print it (as necessary) are here. */#include <stdio.h>#include <stdlib.h>#include <string.h>#include "dis.h"#include "addr.h"voidbit_dynamic(m68kword inst){	int	destreg = inst & 7;	int	destmode = (inst >> 3) & 7;	int	type = (inst >> 6) & 3;	int	srcreg = (inst >> 9) & 7;	int	size = (destmode == 0) ? LONGWORD : BYTE;	char	name[10];	if (type == 0) {		/* BTST */		if (!ISDEA(destmode, destreg))			return;	} else {		/* BCHG, BCLR, BSET */		if (!ISADEA(destmode, destreg))			return;	}	sprintf(name, "B%s", bitd[type]);	if (getea(buf2, destreg, destmode, size))		return;	sprintf(buf1, "D%d", srcreg);	instprint(ops2f(2) | size2f(size), name, buf1, buf2);	valid = 1;}voidbit_static(m68kword inst){	int	reg = inst & 7;	int	mode = (inst >> 3) & 7;	int	type = (inst >> 6) & 3;	int	size = (ISDATA(mode)) ? LONGWORD : BYTE;	long	value;	int	failure;	char	name[10];	if (type == 0) {		/* BTST */		if (!ISDEAlessIMM(mode, reg))			return;	} else {		/* BCHG, BCLR, BSET */		if (!ISADEA(mode, reg))			return;	}	value = getval(/* BYTE */ WORD, &failure);	if (failure)		return;	if (value & 0xff00)		return;	if (!ISDATA(mode))		value %= 8;	sprintf(name, "B%s", bitd[type]);	if (getea(buf2, reg, mode, size))		return;	immsprintf(buf1, value);	instprint(ops2f(2) | size2f(size) | sharp2f(1), name, buf1, buf2);	valid = 1;}voidbiti_reg(const char *name, int size, const char *reg){	long	value;	int	failure;	value = getval(size, &failure);	if (failure)		return;	immsprintf(buf1, value);	instprint(ops2f(2) | size2f(size) | sharp2f(1), name, buf1, reg);	if (size == BYTE && (value & 0xff00))		return;	valid = 1;}voidbiti_size(const char *name, m68kword inst){	int	reg = inst & 7;	int	mode = (inst >> 3) & 7;	int	size = (inst >> 6) & 3;	long	value;	int	failure;	if (name[0] == 'C') {		/* CMPI */		if (!ISDEAlessIMM(mode, reg))			return;	} else {		/* ADDI, ANDI, EORI, ORI, SUBI */		if (!ISADEA(mode, reg))			return;	}	value = getval(size, &failure);	if (failure)		return;	immsprintf(buf1, value);	if (getea(buf2, reg, mode, size))		return;	instprint(ops2f(2) | size2f(size) | sharp2f(1), name, buf1, buf2);	valid = 1;}voidcmp2_chk2(m68kword inst){	int	srcreg = inst & 7;	int	srcmode = (inst >> 3) & 7;	int	size = (inst >> 9) & 3;	long	value;	int	failure;	int	destreg;	if (!ISCEA(srcmode, srcreg))		return;	value = getval(WORD, &failure);	if (failure)		return;	if (getea(buf1, srcreg, srcmode, size))		return;	destreg = (value >> 12) & 7;	Areg2(buf2, (value & 0x8000) ? 'A' : 'D', destreg);	instprint(ops2f(2) | size2f(size), (value & 0x0800) ? "CHK2" : "CMP2",	  buf1, buf2);	if (value & 0x07ff)		return;	valid = 1;}voidmovep(m68kword inst){	int	addrreg = inst & 7;	int	datareg = (inst >> 9) & 7;	int	opmode = (inst >> 6) & 7;	int	size = (opmode & 1) ? LONGWORD : WORD;	long	value;	int	failure;	value = getval(WORD, &failure);	if (failure)		return;	sprintf(buf1, "D%d", datareg);	immsprintf(buf2, value);	sprintf(buf2 + strlen(buf2), "(%2.2s)", Areg(addrreg));	if (opmode & 2)		instprint(ops2f(2) | size2f(size) | sharp2f(2), "MOVEP",		  buf1, buf2);	else		instprint(ops2f(2) | size2f(size) | sharp2f(1), "MOVEP",		  buf2, buf1);	valid = 1;}voidcas(m68kword inst){	int	reg = inst & 7;	int	mode = (inst >> 3) & 7;	int	size;	int	comparereg;	int	updatereg;	long	value;	int	failure;	if (!ISAMEA(mode, reg))		return;	switch ((inst >> 9) & 3) {	case 1:	size = BYTE;		break;	case 2:	size = WORD;		break;	case 3:	size = LONGWORD;	break;	}	value = getval(WORD, &failure);	comparereg = value & 7;	updatereg = (value >> 6) & 7;	if (failure)		return;	sprintf(buf1, "D%d", comparereg);	sprintf(buf2, "D%d", updatereg);	if (getea(buf3, reg, mode, size))		return;	instprint(ops2f(3) | size2f(size), "CAS", buf1, buf2, buf3);	if (value & 0xfe38)		return;	valid = 1;}voidcas2(m68kword inst){	int	size = (inst & 0x0200) ? LONGWORD : WORD;	long	value[2];	int	failure;	int	comparereg[2];	int	updatereg[2];	int	reg[2];	int	anotd[2];	int	i;	for (i = 0; i < 2; i++) {		value[i] = getval(WORD, &failure);		if (failure)			return;		comparereg[i] = value[i] & 7;		updatereg[i] = (value[i] >> 6) & 7;		reg[i] = (value[i] >> 12) & 7;		anotd[i] = (value[i] & 0x8000) ? 'A' : 'D';	}	sprintf(buf1, "D%d:D%d", comparereg[0], comparereg[1]);	sprintf(buf2, "D%d:D%d", updatereg[0], updatereg[1]);	Areg2(buf3, anotd[0], reg[0]);	buf3[2] = ':';	Areg2(&buf3[3], anotd[1], reg[1]);	instprint(ops2f(3) | size2f(size), "CAS2", buf1, buf2, buf3);	valid = 1;}voidmoves(m68kword inst){	int	srcreg = inst & 7;	int	srcmode = (inst >> 3) & 7;	int	size = (inst >> 6) & 3;	long	value;	int	failure;	int	reg;	int	anotd;	char	*cp1 = buf1, *cp2 = buf2;	if (!ISAMEA(srcmode, srcreg))		return;	value = getval(WORD, &failure);	if (failure)		return;	reg = (value >> 12) & 7;	anotd = (value & 0x8000) ? 'A' : 'D';	if (getea(buf1, srcreg, srcmode, size))		return;	Areg2(buf2, anotd, reg);	if (value & 0x0800) {		cp1 = buf2;		cp2 = buf1;	}	instprint(ops2f(2) | size2f(size), "MOVES", cp1, cp2);	if (value & 0x07ff)		return;	valid = 1;}voidmove(m68kword inst, int size){	int	srcreg, destreg;	int	srcmode, destmode;	srcreg = inst & 7;	srcmode = (inst >> 3) & 7;	destmode = (inst >> 6) & 7;	destreg = (inst >> 9) & 7;	if (ISDIRECT(destmode)) {		if (size == BYTE)			return;	} else if (size == BYTE && ISDIRECT(srcmode)	  || !ISAEA(destmode, destreg))		return;	if (getea(buf1, srcreg, srcmode, size))		return;	if (ISDIRECT(destmode)) {		sprintf(buf2, "%2.2s", Areg(destreg));		instprint(ops2f(2) | size2f(size), "MOVEA", buf1, buf2);	} else {		if (getea(buf2, destreg, destmode, size))			return;		instprint(ops2f(2) | size2f(size), "MOVE", buf1, buf2);	}	valid = 1;}voidmisc_size(const char *name, m68kword inst){	int	reg = inst & 7;	int	mode = (inst >> 3) & 7;	int	size = (inst >> 6) & 3;	if (name[0] == 'T') {		/* TST */		if (size == BYTE && !ISDEAlessIMM(mode, reg))			return;	} else {		/* CLR, NEG, NEGX, NOT */		if (!ISADEA(mode, reg))			return;	}	if (getea(buf1, reg, mode, size))		return;	instprint(ops2f(1) | size2f(size), name, buf1);	valid = 1;}voidmisc_ea(const char *name, m68kword inst, int size){	int	reg = inst & 7;	int	mode = (inst >> 3) & 7;	if (name[1] < 'C') {		/* NBCD, TAS */		if (!ISADEA(mode, reg))			return;	} else {		/* JMP, JSR, PEA */		if (!ISCEA(mode, reg))			return;	}	if (getea(buf1, reg, mode, size))		return;	instprint(ops2f(1), name, buf1);	valid = 1;}voidchk(m68kword inst){	int	srcreg = inst & 7;	int	srcmode = (inst >> 3) & 7;	int	destreg = (inst >> 9) & 7;	if (!ISDEA(srcmode, srcreg))		return;	if (getea(buf1, srcreg, srcmode, WORD))		return;	sprintf(buf2, "D%d", destreg);	instprint(ops2f(2), "CHK", buf1, buf2);	valid = 1;}voidlea(m68kword inst){	int	srcreg = inst & 7;	int	srcmode = (inst >> 3) & 7;	int	destreg = (inst >> 9) & 7;	int	retval;	if (!ISCEA(srcmode, srcreg))		return;	retval = getea(buf1, srcreg, srcmode, LONGWORD);	if (retval)		return;	sprintf(buf2, "%2.2s", Areg(destreg));	instprint(ops2f(2), "LEA", buf1, buf2);	valid = 1;}voidlink(m68kword inst, int size){	int	reg = inst & 7;	long	value;	int	failure;	value = getval(size, &failure);	if (failure)		return;	sprintf(buf1, "%2.2s", Areg(reg));	sprintf(buf2, "%ld", value);	instprint(ops2f(2) | sharp2f(2), "LINK", buf1, buf2);	valid = 1;}voidunlk(m68kword inst){	int	reg = inst & 7;	sprintf(buf1, "%2.2s", Areg(reg));	instprint(ops2f(1), "UNLK", buf1);	valid = 1;}voidswap(m68kword inst){	int	reg = inst & 7;	sprintf(buf1, "D%d", reg);	instprint(ops2f(1), "SWAP", buf1);	valid = 1;}voidbkpt(m68kword inst){	int	vector = inst & 0xf;	sprintf(buf1, "%d", vector);	instprint(ops2f(1) | sharp2f(1), "BKPT", buf1);	valid = 1;}voidtrap(m68kword inst){	int	vector = inst & 0xf;	sprintf(buf1, "%d", vector);	instprint(ops2f(1) | sharp2f(1), "TRAP", buf1);	valid = 1;}voidstop_rtd(const char *name){	int	value;	int	failure;	value = getval(WORD, &failure);	if (failure)		return;	sprintf(buf1, "%ld", value);	instprint(ops2f(1) | sharp2f(1), name, buf1);	valid = 1;}voidmovec(int tocr){	long	value;	int	failure;	int	reg;	int	anotd;	int	controlreg;	char	*cr;	char	*cp1;	char	*cp2;	value = getval(WORD, &failure);	if (failure)		return;	reg = (value >> 12) & 7;	anotd = (value & 0x8000) ? 'A' : 'D';	controlreg = value & 0x0fff;	Areg2(buf1, anotd, reg);	switch (controlreg) {	case 0x000:	cr = "SFC";	break;	/* Source Function Code */	case 0x001:	cr = "DFC";	break;	/* Destination Function Code */	case 0x002:	cr = "CACR";	break;	/* Cache Control Register */	case 0x800:	cr = "USP";	break;	/* User Stack Pointer */	case 0x801:	cr = "VBR";	break;	/* Vector Base Register */	case 0x802:	cr = "CAAR";	break;	/* Cache Address Register */	case 0x803:	cr = "MSP";	break;	/* Master Stack Pointer */	case 0x804:	cr = "ISP";	break;	/* Interrupt Stack Pointer */	default:		return;	}	if (tocr) {		cp1 = buf1;		cp2 = cr;	} else {		cp1 = cr;		cp2 = buf1;	}	instprint(ops2f(2), "MOVEC", cp1, cp2);	valid = 1;}voidext(m68kword inst){	int	reg = inst & 3;	int	opmode = (inst >> 6) & 3;	int	size = (opmode == 2) ? WORD : LONGWORD;	char	sext[5];	sprintf(buf1, "D%d", reg);	strcpy(sext, "EXT");	if (inst & 0x0100)		strcat(sext, "B");	instprint(ops2f(1) | size2f(size), sext, buf1);	valid = 1;}voidmovereg(m68kword inst, const char *regname, int to){	int		reg = inst & 7;	int		mode = (inst >> 3) & 7;	const char	*cp1, *cp2;	if (getea(buf1, reg, mode, WORD))		return;	if (to) {		if (!ISDEA(mode, reg))			return;		cp1 = buf1;		cp2 = regname;	} else {		if (!ISADEA(mode, reg))			return;		cp1 = regname;		cp2 = buf1;	}	instprint(ops2f(2) | size2f(WORD), "MOVE", cp1, cp2);	valid = 1;}voidmoveusp(m68kword inst, int to){	int	reg = inst & 7;	char	*cp1 = buf1, *cp2 = "USP";	sprintf(buf1, "%2.2s", Areg(reg));	if (!to) {		cp1 = cp2;		cp2 = buf1;	}	instprint(ops2f(2) | size2f(LONGWORD), "MOVE", cp1, cp2);	valid = 1;}static voidreglist(char *s, unsigned long regmask, int mode){	char	*t = s;	if (mode == 4)		revbits(&regmask, 16);	s = regbyte(s, regmask & 0xff, "D", 0);	s = regbyte(s, regmask >> 8, "A", s != t);	if (s == t)		strcpy(s, "0");}voidmovem(m68kword inst, int to){	int		reg = inst & 7;	int		mode = (inst >> 3) & 7;	int		size = (inst & 0x40) ? LONGWORD : WORD;	unsigned long	regmask;	int		failure;	char		*cp1, *cp2;	regmask = getval(WORD, &failure) & 0xffff;	if (failure)

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产亚洲欧美一区在线观看| 樱花影视一区二区| 亚洲日本va午夜在线影院| 91首页免费视频| 亚洲福利视频导航| 日韩欧美一二区| 国产成人免费在线观看| 亚洲免费三区一区二区| 欧美日韩一区二区三区视频| 日韩va亚洲va欧美va久久| 久久久久久久av麻豆果冻| 91在线视频免费观看| 亚洲va欧美va人人爽午夜 | 欧美变态tickle挠乳网站| 精品国产a毛片| 成人白浆超碰人人人人| 亚洲图片有声小说| 日韩精品一区二区三区三区免费| 国产精品小仙女| 一区二区三区四区中文字幕| 日韩一区二区在线播放| 国产成人小视频| 亚洲小少妇裸体bbw| 久久这里只精品最新地址| 不卡av在线免费观看| 日日噜噜夜夜狠狠视频欧美人| 精品国产人成亚洲区| 99精品久久久久久| 免费观看日韩av| 中文字幕一区二区三区乱码在线| 欧美高清dvd| 国产成a人亚洲| 亚洲成人av一区| 久久久久久久久久久久久女国产乱| 日本韩国欧美在线| 久久国产精品72免费观看| 中文字幕一区二区在线观看 | 在线观看亚洲专区| 九九视频精品免费| 一区二区三区四区视频精品免费| 日韩欧美成人一区| 色悠久久久久综合欧美99| 久久精品国产一区二区三| 国产精品久久毛片| 91麻豆精品91久久久久同性| 岛国精品一区二区| 日韩国产精品久久久| 国产精品久久久久久亚洲伦| 欧美一区二区日韩| 91久久精品一区二区三| 国产精品自拍一区| 午夜电影网亚洲视频| 国产精品福利av| 精品久久一区二区| 欧美日本乱大交xxxxx| 不卡一区在线观看| 狠狠色伊人亚洲综合成人| 亚洲bt欧美bt精品777| 亚洲欧洲在线观看av| 久久伊人中文字幕| 7777精品伊人久久久大香线蕉经典版下载 | 欧美日韩国产一二三| 成a人片国产精品| 国产乱色国产精品免费视频| 五月激情综合色| 亚洲日本免费电影| 国产欧美一区二区精品婷婷| 91精品国产91综合久久蜜臀| 在线免费观看日韩欧美| 成人午夜av影视| 国产精品亚洲一区二区三区在线 | 91成人网在线| 成人午夜视频福利| 黄网站免费久久| 男男视频亚洲欧美| 亚洲第一av色| 一区二区三区久久| 日韩美女视频一区二区| 国产精品丝袜久久久久久app| 久久综合色婷婷| 精品三级在线看| 日韩欧美在线不卡| 欧美精品在线观看播放| 欧洲色大大久久| 一本一道久久a久久精品综合蜜臀| 岛国精品一区二区| 国产成人av电影免费在线观看| 国内精品免费**视频| 日本中文字幕一区二区有限公司| 亚洲国产日韩a在线播放| 夜夜精品视频一区二区| 一区二区三区在线看| 亚洲美女视频在线观看| 中文字幕欧美一区| 亚洲天堂福利av| 亚洲日本成人在线观看| 综合久久久久久| 亚洲人成精品久久久久久| 1024亚洲合集| 亚洲精品午夜久久久| 亚洲美女视频一区| 亚洲综合一区二区三区| 一区二区久久久久久| 亚洲综合图片区| 五月天亚洲婷婷| 男女激情视频一区| 久久er99精品| 黄色精品一二区| 国产a区久久久| 99天天综合性| 在线视频亚洲一区| 欧美日韩另类国产亚洲欧美一级| 欧美日韩一区二区三区视频| 在线不卡欧美精品一区二区三区| 777奇米成人网| 精品盗摄一区二区三区| 久久久午夜精品| 在线91免费看| 精品久久久久久最新网址| 国产视频一区在线播放| 国产精品久久久久久久第一福利| 亚洲男同性恋视频| 亚洲午夜免费视频| 日韩电影在线看| 亚洲欧美经典视频| 亚洲成人免费电影| 久久99精品久久久久久| 国产精品一二三| 91视频观看视频| 欧美日韩mp4| 26uuu精品一区二区| www国产精品av| 亚洲欧美在线另类| 亚洲国产一区在线观看| 男人操女人的视频在线观看欧美| 国产精品亚洲一区二区三区妖精| 99久久久精品免费观看国产蜜| 韩国一区二区视频| voyeur盗摄精品| 欧美亚洲综合网| 精品91自产拍在线观看一区| 国产精品另类一区| 亚洲成人动漫一区| 国产一区二区伦理片| 青青草原综合久久大伊人精品 | 91欧美一区二区| 在线不卡免费欧美| 国产欧美一区二区三区在线老狼| 亚洲人精品午夜| 免费欧美在线视频| av一区二区三区| 欧美日韩高清在线| 国产嫩草影院久久久久| 夜夜揉揉日日人人青青一国产精品| 蜜臀久久99精品久久久画质超高清| 国产91色综合久久免费分享| 日本黄色一区二区| 欧美精品一区二区三区高清aⅴ | 午夜国产精品一区| 国产电影精品久久禁18| 色吧成人激情小说| 精品国产1区2区3区| 一区二区三区中文字幕| 久草这里只有精品视频| 色综合中文字幕| 久久综合狠狠综合久久激情| 一区二区三区四区激情| 黄色资源网久久资源365| 色噜噜狠狠一区二区三区果冻| 日韩精品一区在线| 有坂深雪av一区二区精品| 久久99精品久久久久久国产越南| 日本乱人伦aⅴ精品| 久久精品人人做人人综合 | 看国产成人h片视频| 91女厕偷拍女厕偷拍高清| 欧美电影免费观看高清完整版在| 亚洲精品视频一区| 国产一区二区在线免费观看| 欧美视频在线观看一区二区| 日本一区二区电影| 日本不卡在线视频| 色综合久久综合网| 久久精品一级爱片| 蜜臀av一区二区| 欧美性淫爽ww久久久久无| 国产精品污www在线观看| 久久国产精品99精品国产| 欧美性videosxxxxx| 国产精品免费视频网站| 久热成人在线视频| 欧美日韩国产另类不卡| 中文字幕中文字幕中文字幕亚洲无线| 免费观看91视频大全| 欧美优质美女网站| 中文一区一区三区高中清不卡| 日本特黄久久久高潮| 欧美最猛性xxxxx直播| 国产精品久久福利| 国产成人精品综合在线观看|