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

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

?? nwfpe.cpp

?? RISC processor ARM-7 emulator
?? CPP
字號(hào):
/*************************************************************************
    Copyright (C) 2002,2003,2004,2005 Wei Qin
    See file COPYING for more information.

    This program is free software; you can redistribute it and/or modify    
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    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.
*************************************************************************/

#include "nwfpe.h"

#ifdef __COMPILE_SIMULATOR_
#include "armsim.hpp"
#else 
#include <armemul.h>
#ifdef _MODULARIZE_
using emulator::INST_FPE;
#endif
#endif

#ifdef DEBUG
#include <cstdio>
#endif

#define FNFLD ((inst>>16) & 7)
#define FDFLD ((inst>>12) & 7)
#define FCFLD (inst & 15)

#undef DEBUG
/* if currently in fpe emulation */

#ifdef _MODULARIZE_
void impl_fpe_w_pc(armulator *emu, arm_inst_t inst, arm_addr_t pc)
#define EMU(_x) emu->_x
#else
void impl_fpe_w_pc(arm_inst_t inst, arm_addr_t pc)
#define EMU(_x) _x
#endif
{
	int i;

	/* if already in fpe, then must be an exit */
	if (EMU(in_fpe)) {

#ifdef DEBUG
		fprintf(stderr, "exit from FPE\n");
#endif

		if (READ_REG(0)==0) {
			fprintf(stderr, "floating point error!\n");
			fprintf(stderr, "r[0] = %x\n", READ_REG(0));
			fprintf(stderr, "fpsr = %x\n\n", MEM_READ_WORD(FPE_FPA11+80));
		}

		/* restore registers */
		for (i=0;i<16;i++)
			WRITE_REG(i, MEM_READ_WORD(fpe_stack+i*4));

		/* restore CPSR */
#ifndef __COMPILE_SIMULATOR_
		WRITE_CPSR(MEM_READ_WORD(fpe_stack+64));
#else
		WRITE_CPSR((MEM_READ_WORD(fpe_stack+64))>>28);
#endif

		EMU(in_fpe) = false;
	}
	else {
		EMU(in_fpe) = true;

#ifdef DEBUG
		{
		char buf[256];
		fprintf(stderr, "emulate an FPE %08x:%08x\n", pc-8, inst);
		disasm_fpe(inst, pc-8, buf);
		fprintf(stderr, "0x%08x : 0x%08x    %s", pc-8, inst, buf);
		}
#endif

		/* save registers */
		for (i=0;i<15;i++) {
			MEM_WRITE_WORD(fpe_stack+i*4, READ_REG(i));
		}

		/* program counter set to the next instruction */
		MEM_WRITE_WORD(fpe_stack+i*4, pc-4);
#ifndef __COMPILE_SIMULATOR_
		MEM_WRITE_WORD(fpe_stack+64, READ_CPSR);
#else
		MEM_WRITE_WORD(fpe_stack+64, (READ_CPSR)<<28);
#endif

		/* r10 points to the fp working area */
		WRITE_REG(10, FPE_FPA11);

		/* SP pointes to the userregister area */
		WRITE_REG(SPIND, fpe_stack);

		/* PC goes to the fpe entry point */
		WRITE_REG(15, FPE_ENTRY);

#ifndef __COMPILE_SIMULATOR_
		EMULATOR_STUB(fpe, inst);
#endif

	}
}

void impl_fpe(IMPL_FORMALS)
{
#ifdef _MODULARIZE_
	impl_fpe_w_pc(emu, inst, PC);
#else
	impl_fpe_w_pc(inst, PC);
#endif
}

static char *arm_binfpnames[] = 
{"adf", "muf", "suf", "rsf", "dvf", "rdf", "pow", "rpw",
 "rmf", "fml", "fdv", "frd", "pol"};

static char *arm_unfpnames[] =
{"mvd", "mnf", "abs", "rnd", "sqt", "log", "lgn", "exp",
 "sin", "cos", "tan", "asn", "acs", "atn", "urd", "nrm"};

static char *arm_fp_const[] =
{"0.0", "1.0", "2.0", "3.0", "4.0", "5.0", "0.5", "10.0"};

/*precision string */
static char fpe_prec(arm_inst_t inst) 
{
	switch (inst & 0x00080080)
	{
		case 0: return 's';
		case 0x80: return 'd';
		default: return 'e';
	} 
}

static char fpe_prec2(arm_inst_t inst)
{
	switch (inst & 0x00408000)
	{
		case 0: return 's';
		case 0x8000: return 'd';
		case 0x00400000: return 'e';
		default: return 'p';
	}
}

static char fpe_count(arm_inst_t inst)
{
	switch (inst & 0x00408000)
	{
		case 0: return '4';
		case 0x8000: return '1';
		case 0x00400000: return '2';
		default: return '3';
	}
}

static char fpe_rmode(arm_inst_t inst)
{
	switch (inst & 0x60)
	{
		case 0: return ' ';
		case 0x20: return 'p';
		case 0x40: return 'm';
		default: return 'z';                             
	}
}

static UInt32 disasm_fpe_operand(int reg, char *buf)
{
	if (reg > 7)
		return sprintf(buf, "#%s", arm_fp_const[reg & 7]);
	else
		return sprintf(buf, "f%d", reg);
}

static char *disasm_fpe_address(int inst, char *buf)
{
	buf += sprintf(buf, "[%s", arm_regnames [(inst >> 16) & 0xf]);
	if ((inst & 0x01000000) != 0)
	{
		int offset = inst & 0xff;
		if (offset)
			buf += sprintf(buf, ", %s#%d]%s",
				((inst& 0x00800000) == 0 ? "-" : ""), offset * 4,
   				((inst& 0x00200000) != 0 ? "!" : ""));
		else
			buf += sprintf(buf, "]");
	}
	else 
	{
		int offset = inst & 0xff;
		if (offset)
			buf += sprintf(buf, "], %s#%d",
				((inst & 0x00800000) == 0 ? "-" : ""), offset * 4);
		else
			buf += sprintf(buf, "]");
	}      
	return buf;
}

char *disasm_fpe(arm_inst_t inst, arm_addr_t addr, char *buf)
{
	/* binary operations */
	if ((inst & 0x00008f10) == 0x00100 &&
		OPCD>=0xE0 && OPCD<=0xEC) {

		buf += sprintf(buf, "%s%s%c%c ", arm_binfpnames[OPCD&0xF],
			arm_conditional[COND], fpe_prec(inst), fpe_rmode(inst));

		buf += disasm_fpe_operand(FDFLD, buf);
		buf += sprintf(buf, ", ");
		buf += disasm_fpe_operand(FNFLD, buf);
		buf += sprintf(buf, ", ");
		buf += disasm_fpe_operand(FCFLD, buf);
	}
	else if ((inst & 0x00008f10) == 0x08100 &&
		OPCD>=0xE0 && OPCD<=0xEF) {

		buf += sprintf(buf, "%s%s%c%c ", arm_unfpnames[OPCD&0xF],
			arm_conditional[COND], fpe_prec(inst), fpe_rmode(inst));

		buf += disasm_fpe_operand(FDFLD, buf);
		buf += sprintf(buf, ", ");
		buf += disasm_fpe_operand(FCFLD, buf);
	}
	else if ((inst & 0x0ff00f1f) == 0x0e000110) { /*flt*/
		buf += sprintf(buf, "flt%s%c%c ",
			arm_conditional[COND], fpe_prec(inst), fpe_rmode(inst));
		buf += disasm_fpe_operand(FNFLD, buf);
		buf += sprintf(buf, ", %s", arm_regnames[RDFLD]);
	}
	else if ((inst & 0x0fff0f98) == 0x0e100110) { /*fix*/
		buf += sprintf(buf, "fix%s%c ",
			arm_conditional[COND], fpe_rmode(inst));
		buf += sprintf(buf, "%s, ", arm_regnames[RDFLD]);
		buf += disasm_fpe_operand(inst&0x7, buf);
	}
	else if ((inst & 0x000f0fff) == 0x00000110 && /*wfs, rfs, wfc, rfc */
		OPCD>=0xE2 && OPCD<=0xE5) {

		static char *names[] = {"wfs", "rfs", "wfc", "rfc"};

		buf += sprintf(buf, "%s%s ", names[OPCD-0xe2], arm_conditional[COND]);
		buf += sprintf(buf, "%s", arm_regnames[RDFLD]);
	}
	else if ((inst & 0x0008fff0) == 0x0000f110 && /*cmf, cnf, cmfe, cnfe */
		(OPCD==0xE9 || OPCD == 0xEB || OPCD == 0xED || OPCD == 0xEF)) {

		static char *names[] = {"cmf", "cnf", "cmfe", "cnfe"};

		buf += sprintf(buf, "%s%s ", names[(OPCD-0xe9)>>1],
			arm_conditional[COND]);
		buf += disasm_fpe_operand(FNFLD, buf);
		buf += sprintf(buf, ", ");
		buf += disasm_fpe_operand(FCFLD, buf);
	}
	else if ((inst & 0x0e100f00) == 0x0c000100) {
		buf += sprintf(buf, "stf%s%c ", arm_conditional[COND], fpe_prec2(inst));
		buf += disasm_fpe_operand(FDFLD, buf);
		buf += sprintf(buf, ", ");
		buf = disasm_fpe_address(inst, buf);
	}
	else if ((inst & 0x0e100f00) == 0x0c100100) {
		buf += sprintf(buf, "ldf%s%c ", arm_conditional[COND], fpe_prec2(inst));
		buf += disasm_fpe_operand(FDFLD, buf);
		buf += sprintf(buf, ", ");
		buf = disasm_fpe_address(inst, buf);
	}
	else if ((inst & 0x0e100f00) == 0x0c000200) {
		buf += sprintf(buf, "sfm%s ", arm_conditional[COND]);
		buf += disasm_fpe_operand(FDFLD, buf);
		buf += sprintf(buf, ", %c, ", fpe_count(inst));
		buf = disasm_fpe_address(inst, buf);
	}
	else if ((inst & 0x0e100f00) == 0x0c100200) {
		buf += sprintf(buf, "lfm%s ", arm_conditional[COND]);
		buf += disasm_fpe_operand(FDFLD, buf);
		buf += sprintf(buf, ", %c, ", fpe_count(inst));
		buf = disasm_fpe_address(inst, buf);
	}
	else {
		buf += sprintf(buf, "????\n");
		return buf;
	}

	return buf + sprintf(buf, ";\n");
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色88888久久久久久影院按摩 | 日韩一卡二卡三卡国产欧美| 成人免费在线观看入口| 波多野结衣视频一区| 中文字幕在线观看一区二区| www.色综合.com| 亚洲日本乱码在线观看| 色拍拍在线精品视频8848| 尤物视频一区二区| 欧美日韩国产a| 免费观看30秒视频久久| 欧美大片在线观看一区二区| 奇米在线7777在线精品| 日韩一卡二卡三卡国产欧美| 国产在线播放一区| 国产精品成人网| 日本久久一区二区| 青青草97国产精品免费观看无弹窗版| 日韩美一区二区三区| 中文在线一区二区| 国产精品资源网| 亚洲色图19p| 在线成人免费视频| 国产一区二区三区香蕉| 中文字幕在线一区免费| 欧美日韩日本视频| 国产呦精品一区二区三区网站| 国产精品美女久久久久高潮| 欧美色老头old∨ideo| 国内成人精品2018免费看| 国产精品久久毛片a| 欧美日韩不卡一区二区| 国产综合久久久久久鬼色| 亚洲欧美日韩国产综合在线| 91精品国产91综合久久蜜臀| 国产精品一区二区在线观看不卡| 亚洲精品高清在线| 亚洲精品一区二区三区影院| 97久久久精品综合88久久| 蜜臀久久99精品久久久久久9| 18涩涩午夜精品.www| 欧美变态tickling挠脚心| 91天堂素人约啪| 精品一区二区三区久久久| 亚洲六月丁香色婷婷综合久久 | 欧美一区三区二区| 99精品久久久久久| 国内精品第一页| 午夜久久久影院| 亚洲视频免费在线观看| 国产日韩欧美精品一区| 欧美日本一道本在线视频| www.视频一区| 国产成人精品免费在线| 麻豆91在线观看| 婷婷六月综合网| 亚洲欧美综合色| 久久噜噜亚洲综合| 3751色影院一区二区三区| 93久久精品日日躁夜夜躁欧美| 精品一区二区在线观看| 亚洲午夜免费电影| 国产精品久久免费看| 久久综合成人精品亚洲另类欧美| 欧美午夜精品一区二区三区| 色综合中文字幕国产 | av中文字幕在线不卡| 久久精品国产在热久久| 午夜精品国产更新| 亚洲伊人伊色伊影伊综合网| 自拍偷自拍亚洲精品播放| 中文字幕av一区二区三区高| 26uuu亚洲婷婷狠狠天堂| 日韩欧美一级精品久久| 日韩午夜在线观看| 91精品国产综合久久精品图片| 91久久线看在观草草青青| 99精品视频在线观看| 91麻豆国产福利精品| 91亚洲精品一区二区乱码| 不卡免费追剧大全电视剧网站| 国产激情偷乱视频一区二区三区 | 怡红院av一区二区三区| 一级日本不卡的影视| 亚洲美女电影在线| 亚洲一区自拍偷拍| 亚洲二区在线观看| 日韩中文字幕麻豆| 麻豆久久一区二区| 极品少妇xxxx精品少妇偷拍| 国内精品伊人久久久久影院对白| 国产美女一区二区三区| 风间由美一区二区三区在线观看 | 日本欧美韩国一区三区| 麻豆国产精品官网| 国产成人精品免费看| 成人黄色免费短视频| 色综合色综合色综合色综合色综合 | 亚洲国产一区二区在线播放| 午夜精品免费在线| 精品一区二区三区在线视频| 国产成人综合在线播放| 一本色道亚洲精品aⅴ| 欧美猛男gaygay网站| 日韩精品一区二区三区swag| 久久午夜色播影院免费高清| 欧美激情资源网| 亚洲一区二区三区在线看| 日韩av中文字幕一区二区| 国产米奇在线777精品观看| 97se亚洲国产综合自在线| 欧美情侣在线播放| 国产婷婷色一区二区三区四区| 国产精品久久久久一区| 亚洲国产美女搞黄色| 激情文学综合丁香| 91视视频在线观看入口直接观看www | 中文字幕国产精品一区二区| 樱花影视一区二区| 精品亚洲国内自在自线福利| av不卡免费在线观看| 在线电影国产精品| 国产精品水嫩水嫩| 午夜国产精品一区| 丁香激情综合国产| 91精品欧美综合在线观看最新| 国产亚洲一二三区| 性久久久久久久久| www.视频一区| 日韩午夜电影av| 亚洲美女淫视频| 国产a久久麻豆| 欧美一区午夜精品| 亚洲精品乱码久久久久久日本蜜臀| 日本欧美一区二区在线观看| 91在线你懂得| 精品福利一区二区三区免费视频| 一区二区三区精品视频在线| 国产麻豆91精品| 91精品国产综合久久国产大片| 亚洲欧美日韩一区二区三区在线观看| 人人超碰91尤物精品国产| 9人人澡人人爽人人精品| 26uuu另类欧美| 午夜精品久久久久久久蜜桃app| 成人av免费观看| 精品粉嫩超白一线天av| 亚洲国产精品精华液网站| av中文字幕在线不卡| 国产女人aaa级久久久级| 久久 天天综合| 这里是久久伊人| 亚洲国产精品一区二区久久| 91视频一区二区三区| 国产精品久久久久久一区二区三区| 毛片一区二区三区| 日韩午夜av电影| 石原莉奈在线亚洲二区| 欧美综合亚洲图片综合区| 亚洲黄色录像片| 色嗨嗨av一区二区三区| 亚洲视频在线一区| voyeur盗摄精品| 中文字幕一区二区三区乱码在线 | 中文字幕日韩一区| 国产精品1区2区3区在线观看| 精品嫩草影院久久| 美女任你摸久久| 欧美mv日韩mv| 青青草伊人久久| 日韩一区二区视频在线观看| 午夜精品久久久久久久久久| 欧美日韩不卡一区二区| 视频一区在线播放| 欧美一级在线观看| 麻豆精品国产91久久久久久| 精品国产一区久久| 国产成人午夜高潮毛片| 国产女同互慰高潮91漫画| av午夜一区麻豆| 亚洲乱码国产乱码精品精的特点| 91极品美女在线| 午夜伊人狠狠久久| 欧美成人精品二区三区99精品| 老司机精品视频线观看86| 久久综合狠狠综合| 97se亚洲国产综合自在线观| 夜夜爽夜夜爽精品视频| 欧美老女人第四色| 激情六月婷婷综合| 国产精品美女久久久久久久久久久 | 亚洲精品一区二区三区在线观看| 韩国女主播一区二区三区| 久久精品亚洲精品国产欧美| 成人听书哪个软件好| 亚洲另类春色国产| 欧美一区午夜视频在线观看| 国产一区不卡视频| 国产精品大尺度| 制服丝袜日韩国产|