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

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

?? tb.c

?? skyeye是一個可以模擬嵌入式硬件開發板的系統軟件
?? C
?? 第 1 頁 / 共 4 頁
字號:
/* This program is free software; you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation; either version 2, 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 ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See theGNU General Public License for more details.You should have received a copy of the GNU General Public License alongwith this program; if not, write to the Free Software Foundation, Inc.,59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  *//* * author teawater <c7code-uc@yahoo.com.cn> <teawater@gmail.com> */#include "armdefs.h"//teawater 2005-09-12  for gcc-3.3.x compiling, comment below line//#include "arm2x86_self.h"extern mem_bank_t *bank_ptr (ARMword addr);/*ywc 2005-04-22, in armmem.c*/extern mem_bank_t *insn_bank_ptr (ARMword addr);extern ARMul_State *state;//teawater add for new tb manage function 2005.07.10----------------------------//static uint32_t       tb_tbt_size = 0;//static uint32_t       tb_tbp_size = (1024 * 1024 * 32);#define TB_TBT_SIZE	skyeye_config.tb_tbt_size#define TB_TBP_SIZE	skyeye_config.tb_tbp_sizestatic tb_t *tbt_table = NULL;static int tbt_table_size = 0;static uint8_t *tbp_begin = NULL;static uint8_t *tbp_now = NULL;static uint32_t tbp_now_size = 0;static int tbp_dynamic = 0;static LIST_HEAD (tbp_dynamic_list);//AJ2D--------------------------------------------------------------------------#ifdef  __FreeBSD__#define MAP_ANONYMOUS MAP_ANON#endifstatic __inline__ inttranslate_word (ARMul_State * state, ARMword insn, uint8_t * tbp){	int toplen = 0, len = 0;//teawater add for xscale(arm v5) 2005.09.26------------------------------------	ARMword cond, val, op1, shift, rm, rs, rn, rd, sh, y, x;//AJ2D--------------------------------------------------------------------------	uint8_t *begin = tbp;	//init	begin = tbp;	state->trap = 0;//teawater change for debug function 2005.07.09---------------------------------	//breakpoint	if (insn == 0xe7ffdefe) {		GEN_OP (tbp, len, op_begin);		gen_op_movl_trap_im_use_T2 (state, &tbp, &len,					    TRAP_BREAKPOINT);		GEN_OP (tbp, len, op_return);		goto out;	}//AJ2D--------------------------------------------------------------------------//teawater add for xscale(arm v5) 2005.09.01------------------------------------	if ((insn & 0xfff000f0) == 0xe1200070) {		//BKPT		//GEN_OP(tbp, len, op_begin);		gen_op_movl_trap_im_use_T2 (state, &tbp, &len,					    TRAP_INSN_ABORT);		GEN_OP (tbp, len, op_return);		goto out;	}//AJ2D--------------------------------------------------------------------------	//return if debug || irq || fiq || condition	cond = (insn >> 28) & 0xff;	if (cond == AL || cond == NV) {		GEN_OP (tbp, len, op_begin);		//some insn need it		//if (cond == NV)		//      goto translate_word_out;	}	else {		gen_op_movl_Tx_im (state, &tbp, &len, 0, cond);		GEN_OP (tbp, len, op_begin_test_T0);		toplen = len;	}	if (((insn & 0x0e000000) == 0 && (insn & 0x00000090) != 0x90)	    || ((insn & 0x0e000000) == (1 << 25))) {		ARMword set_cc, logic_cc, shiftop;		if (cond == NV)			goto translate_word_out;		op1 = (insn >> 21) & 0xf;		set_cc = (insn >> 20) & 1;//teawater add for xscale(arm v5) 2005.09.01------------------------------------		if (!set_cc & (op1 >= 0x8 && op1 <= 0xb)) {			if (state->is_v5) {				sh = ((insn >> 4) & 0xf);				if (sh == 0x5) {					rm = (insn >> 0) & 0xf;					rd = (insn >> 12) & 0xf;					rn = (insn >> 16) & 0xf;					switch (op1) {					case 0x8:						//qadd						gen_op_movl_Tx_reg (state,								    &tbp,								    &len, 0,								    rm);						gen_op_movl_Tx_reg (state,								    &tbp,								    &len, 1,								    rd);						GEN_OP (tbp, len,							op_qaddl_T0_T1_sq);						break;					case 0x9:						//qsub						gen_op_movl_Tx_reg (state,								    &tbp,								    &len, 0,								    rm);						gen_op_movl_Tx_reg (state,								    &tbp,								    &len, 1,								    rd);						GEN_OP (tbp, len,							op_qsubl_T0_T1_sq);						break;					case 0xa:						//qdadd						gen_op_movl_Tx_reg (state,								    &tbp,								    &len, 0,								    rn);						gen_op_movl_Tx_reg (state,								    &tbp,								    &len, 1,								    rn);						GEN_OP (tbp, len,							op_qaddl_T0_T1_sq);						gen_op_movl_Tx_reg (state,								    &tbp,								    &len, 1,								    rm);						GEN_OP (tbp, len,							op_qaddl_T0_T1_sq);						break;					case 0xb:						//qdsub						gen_op_movl_Tx_reg (state,								    &tbp,								    &len, 0,								    rn);						gen_op_movl_Tx_reg (state,								    &tbp,								    &len, 1,								    rn);						GEN_OP (tbp, len,							op_qaddl_T0_T1_sq);						GEN_OP (tbp, len,							op_movl_T1_T0);						gen_op_movl_Tx_reg (state,								    &tbp,								    &len, 0,								    rm);						GEN_OP (tbp, len,							op_qsubl_T0_T1_sq);						break;					}					gen_op_movl_reg_Tx (state, &tbp, &len,							    rd, 0);					GEN_OP (tbp, len, op_set_q);					goto translate_word_end;				}				else if ((sh & 0x9) == 0x8) {					rm = (insn >> 0) & 0xf;					rs = (insn >> 8) & 0xf;					rn = (insn >> 12) & 0xf;	//rdlo					rd = (insn >> 16) & 0xf;	//rdhi					y = (insn >> 6) & 0x1;					x = (insn >> 5) & 0x1;					gen_op_movl_Tx_reg (state, &tbp, &len,							    0, rm);					gen_op_movl_Tx_reg (state, &tbp, &len,							    1, rs);					if (op1 != 0x9) {						if (x) {							//t							GEN_OP (tbp, len,								op_hi_T0);						}						else {							//b							GEN_OP (tbp, len,								op_lo_T0);						}						GEN_OP (tbp, len,							op_signextend_halfword_T0);					}					if (y) {						//t						GEN_OP (tbp, len, op_hi_T1);					}					else {						//b						GEN_OP (tbp, len, op_lo_T1);					}					GEN_OP (tbp, len,						op_signextend_halfword_T1);					switch (op1) {					case 0x8:						//smlaxy						GEN_OP (tbp, len,							op_mul_T0_T1);						gen_op_movl_Tx_reg (state,								    &tbp,								    &len, 1,								    rn);						GEN_OP (tbp, len,							op_addl_T0_T1_sq);						gen_op_movl_reg_Tx (state,								    &tbp,								    &len, rd,								    0);						GEN_OP (tbp, len, op_set_q);						break;					case 0x9:						if (x) {							//smulwy							GEN_OP (tbp, len,								op_smulwy_T0_T1);							gen_op_movl_reg_Tx								(state, &tbp,								 &len, rd, 0);						}						else {							//smlawy							//gen_op_movl_Tx_reg(state, &tbp, &len, 2, rn);							//GEN_OP(tbp, len, op_smlawy_T2_T1_T0);							GEN_OP (tbp, len,								op_smulwy_T0_T1);							gen_op_movl_Tx_reg								(state, &tbp,								 &len, 1, rn);							GEN_OP (tbp, len,								op_addl_T0_T1_sq);							gen_op_movl_reg_Tx								(state, &tbp,								 &len, rd, 0);							GEN_OP (tbp, len,								op_set_q);						}						break;					case 0xa:						//smlalxy						GEN_OP (tbp, len,							op_mul_T0_T1);						gen_op_movl_Tx_reg (state, &tbp, &len, 1, rn);	//rdlo						gen_op_movl_Tx_reg (state, &tbp, &len, 2, rd);	//rdhi						GEN_OP (tbp, len,							op_smlalxy_T2_T1_T0);						gen_op_movl_reg_Tx (state,								    &tbp,								    &len, 1,								    rn);						gen_op_movl_reg_Tx (state,								    &tbp,								    &len, 2,								    rd);						break;					case 0xb:						//smulxy						GEN_OP (tbp, len,							op_mul_T0_T1);						gen_op_movl_reg_Tx (state,								    &tbp,								    &len, rd,								    0);						break;					}					goto translate_word_end;				}				else if (sh == 0x1 && op1 == 0xb) {					//clz					rm = insn & 0xf;					gen_op_movl_Tx_reg (state, &tbp, &len,							    1, rm);					GEN_OP (tbp, len, op_clzl_T0_T1);					rd = (insn >> 12) & 0xf;					gen_op_movl_reg_Tx (state, &tbp, &len,							    rd, 0);					goto translate_word_end;				}			}			if (op1 == 0x8 || op1 == 0xa) {				//mrs				gen_op_mrs (state, &tbp, &len, insn);				goto translate_word_end;			}		}//AJ2D--------------------------------------------------------------------------		logic_cc = table_logic_cc[op1] & set_cc;		//in arm_arm A 5.1		if (insn & (1 << 25)) {			//immediate operand arm_arm A 5.1.3			val = insn & 0xff;			shift = (uint8_t) ((insn >> 8) & 0xf) * 2;			//ror			if (shift)				val = (val >> shift) | (val << (32 - shift));			//op=set val to t1			gen_op_movl_Tx_im (state, &tbp, &len, 1, val);			if (logic_cc && shift) {				//val = ((insn & 0xff) >> (shift - 1)) & 1;				//op=set val[31] to C				if (val >> 31) {					GEN_OP (tbp, len, op_logic_1_sc);				}				else {					GEN_OP (tbp, len, op_logic_0_sc);				}			}		}		else {			//register			rm = (insn) & 0xf;			//op=set rm(0-15) to t1			gen_op_movl_Tx_reg (state, &tbp, &len, 1, rm);//teawater add check thumb 2005.07.21-------------------------------------------			if (op1 == 0x9 && !set_cc			    && ((insn >> 8) & 0xf) == 0xf) {				//bx or blx(2)				uint32_t tmp = (insn >> 4) & 0xf;				if (tmp == 0x1) {					//bx					GEN_OP (tbp, len, op_bx_T1);				}				else if (tmp == 0x2) {					//blx(2)					GEN_OP (tbp, len, op_blx_T1);				}				if (tmp == 0x1 || tmp == 0x2) {					state->trap = 1;					goto translate_word_end;				}			}//AJ2D--------------------------------------------------------------------------			shiftop = (insn >> 5) & 3;			if (!(insn & (1 << 4))) {				//imm				shift = (uint8_t) (insn >> 7) & 0x1f;				if (shift != 0) {					//op=shift, & set CF if logic_cc					if (logic_cc) {						gen_op_shift_T1_im_sc (state,								       &tbp,								       &len,								       shiftop,								       shift);					}					gen_op_shift_T1_im (state, &tbp, &len,							    shiftop, shift);				}				else {					GEN_OP (tbp, len, op_movl_T2_T1);					GEN_OP (tbp, len,						op_shift_T1_0[shiftop]);					if (logic_cc) {						GEN_OP (tbp, len,							op_shift_T2_0_sc							[shiftop]);						GEN_OP (tbp, len, op_set_cf);					}				}			}			else {				//reg				rs = (insn >> 8) & 0xf;				//op=set rs(0-15) to t0				gen_op_movl_Tx_reg (state, &tbp, &len, 0, rs);				//op=shift, & set CF if logic_cc				if (logic_cc) {					//op=shift & set CF					gen_op_shift_T1_T0_sc (state, &tbp,							       &len, shiftop);				}				else {					//op=shift					gen_op_shift_T1_T0 (state, &tbp, &len,							    shiftop);				}			}		}		if ((op1 == 0x9 || op1 == 0xb) && !set_cc) {			//msr   T1, psr			gen_op_msr (state, &tbp, &len, insn);			goto translate_word_end;		}		//data processing instruction		if (op1 != 0x0f && op1 != 0x0d) {	//!mov && !mvn			rn = (insn >> 16) & 0xf;			//op=set rn(0-15) to t0			gen_op_movl_Tx_reg (state, &tbp, &len, 0, rn);		}		rd = (insn >> 12) & 0xf;		arm2x86_get_dp_op[op1] (state, &tbp, &len, set_cc, rd);		arm2x86_get_dp_op_setcpsr[op1] (state, &tbp, &len, set_cc,						rd);	}	else {		//other instructions		op1 = (insn >> 24) & 0xf;		sh = (insn >> 5) & 3;		if (cond == NV) {//teawater add for xscale(arm v5) 2005.09.15------------------------------------			if (state->is_v5) {				switch (op1) {				case 0x5:				case 0x7:					if (((insn >> 12) & 0xf) == 0xf) {						//pld Ignored					}					goto translate_word_out;					break;//teawater add check thumb 2005.07.21-------------------------------------------				case 0xa:				case 0xb:					//blx(1)					gen_op_movl_trap_im_use_T2 (state,								    &tbp,								    &len,								    TRAP_UNPREDICTABLE);					GEN_OP (tbp, len, op_return);					goto out;					break;//AJ2D--------------------------------------------------------------------------				case 0xc:				case 0xd:					//ldc2 stc2					if (state->is_XScale					    && ((insn >> 8) & 0xf) == 0) {						//mar mra						goto translate_word_out;					}					break;				case 0xe:					//cdp2 mrc2 mcr2					if (state->is_XScale					    && (insn & (1 << 4))					    && (!(insn & (1 << 20)))					    && ((insn >> 8) & 0xf) == 0) {						//mia miaph miabb miabt miatb miatt						goto translate_word_out;					}					break;				default:					goto translate_word_out;					break;				}			}//AJ2D--------------------------------------------------------------------------			else {				goto translate_word_out;			}		}		if (sh != 0 && (op1 == 0 || op1 == 1)) {			//ldrh strh ldrsh ldrsb			gen_op_ldrhstrh (state, &tbp, &len, insn, sh);		}		else {			arm2x86_get_other_op[op1] (state, insn, &tbp, &len);		}	}      translate_word_end:	if (state->trap) {		GEN_OP (tbp, len, op_return);	}	if (toplen && begin) {		//set jmp length of condition code		//begin[toplen-1] = (uint8_t)(len - toplen);		int *p_tmp = (int *) (begin + (toplen - sizeof (int)));		*p_tmp = len - toplen;	}      translate_word_out:	//r15 += 4	if (!state->trap || toplen) {		GEN_OP (tbp, len, op_addpc);		state->trap = 0;	}	//TEA_OUT(GEN_OP(tbp, len, op_return));      out:	if (len > TB_INSN_LEN_MAX) {		fprintf (stderr,			 "SKYEYE: TB_INSN_LEN_MAX: insn %x len %d > TB_INSN_LEN_MAX %d.\n",			 insn, len, TB_INSN_LEN_MAX);		skyeye_exit (-1);	}/*#ifdef TEA_DEBUG	{		static int	insn_max = 0;		if (len > insn_max) {			insn_max = len;			fprintf(stderr, "\nSKYEYE: insn_max = %d.\n", insn_max);		}	}#endif	//TEA_DEBUG*/	return (len);}//teawater add tb_insn_addr 2005.10.08------------------------------------------/*static uint8_t *tb_translate(ARMul_State * state, ARMword *addr, ARMword *tb_begin_addr, uint8_t *tbp, ARMword *tran_addr, uint8_t **tbp_now)*/static uint8_t *tb_translate(ARMul_State * state, ARMword *addr, ARMword *tb_begin_addr, tb_t *tbt){	int		len;	uint8_t		*ret = NULL;//	ARMword		*tb_end_addr = tb_begin_addr + (TB_LEN - (*tran_addr - TB_ALIGN(*tran_addr)))  / sizeof(ARMword);	ARMword		*tb_end_addr = tb_begin_addr + (TB_LEN - (tbt->tran_addr - TB_ALIGN(tbt->tran_addr)))  / sizeof(ARMword);//teawater change for local tb branch directly jump 2005.10.10------------------	tb_branch_save_t	*e;	struct list_head	*list,*n;//AJ2D--------------------------------------------------------------------------//teawater change for local tb branch directly jump 2005.10.10------------------	INIT_LIST_HEAD(&tb_branch_save_list);	now_tbt = tbt;	tbt->ret_addr = 0;//AJ2D--------------------------------------------------------------------------	for( ; tb_begin_addr < tb_end_addr; tb_begin_addr++) {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色婷婷精品久久二区二区蜜臂av| 成人污污视频在线观看| 国产自产v一区二区三区c| 99久久精品国产一区| 日韩欧美亚洲国产另类| 夜夜爽夜夜爽精品视频| 不卡的av网站| 久久久www成人免费无遮挡大片 | 亚洲精品国产视频| 精品夜夜嗨av一区二区三区| 欧洲一区二区三区免费视频| 日本一区免费视频| 美腿丝袜亚洲色图| 欧美三级三级三级| 亚洲视频中文字幕| 国产精品99久久久| 精品国产青草久久久久福利| 亚洲大片在线观看| 99麻豆久久久国产精品免费优播| 久久久久国产精品免费免费搜索| 日韩精品亚洲专区| 在线播放91灌醉迷j高跟美女| 亚洲乱码国产乱码精品精的特点| 成人在线视频首页| 中文字幕乱码日本亚洲一区二区 | 国产麻豆精品视频| 欧美成人福利视频| 亚洲一区二区三区影院| 欧美日韩精品一区视频| 91精品黄色片免费大全| 亚洲五月六月丁香激情| 色八戒一区二区三区| 综合自拍亚洲综合图不卡区| 91尤物视频在线观看| 国产精品久久毛片av大全日韩| 国产成人av一区二区| 国产三区在线成人av| 丁香激情综合五月| 国产精品精品国产色婷婷| 成人国产视频在线观看| 国产精品二区一区二区aⅴ污介绍| 国v精品久久久网| 国产精品久久久久久久蜜臀| 不卡在线视频中文字幕| 亚洲欧美另类在线| 欧美日韩视频不卡| 日本欧美一区二区三区| 精品国产一二三区| 国产69精品一区二区亚洲孕妇| 国产欧美一区二区三区在线看蜜臀 | 7777精品伊人久久久大香线蕉的| 亚洲一区二区三区视频在线播放| 欧美调教femdomvk| 免费在线观看一区| 中文字幕av资源一区| 91福利国产成人精品照片| 亚洲成人资源在线| 日韩欧美电影在线| 成人深夜视频在线观看| 亚洲一区二区三区视频在线 | 日韩视频一区二区在线观看| 精品在线观看免费| 中文字幕日韩欧美一区二区三区| 欧美网站大全在线观看| 紧缚奴在线一区二区三区| 中文字幕中文在线不卡住| 欧美在线一二三四区| 久久99国产精品免费| 国产精品你懂的| 91精品国产综合久久香蕉麻豆 | 91网站黄www| 美女任你摸久久| 亚洲天堂av一区| 日韩欧美国产一区二区在线播放 | 欧美视频一区二区三区四区| 韩国av一区二区三区在线观看| 一区二区中文字幕在线| 日韩一区二区三区三四区视频在线观看 | 欧美电影免费提供在线观看| 波多野结衣在线aⅴ中文字幕不卡| 亚洲第一综合色| 国产欧美一区视频| 日韩欧美亚洲国产另类| 欧美性淫爽ww久久久久无| 国产成人丝袜美腿| 麻豆一区二区在线| 亚洲国产精品久久人人爱| 国产日产精品1区| 69堂精品视频| 欧美在线视频全部完| 成人一区二区三区中文字幕| 美女www一区二区| 亚洲成人免费在线| 亚洲男女毛片无遮挡| 国产午夜亚洲精品理论片色戒| 欧美一区二区久久久| 日本丰满少妇一区二区三区| 国产麻豆精品久久一二三| 免费成人结看片| 亚洲第一福利视频在线| 亚洲女女做受ⅹxx高潮| 国产亚洲成aⅴ人片在线观看 | 久久精品视频网| 精品国一区二区三区| 7777女厕盗摄久久久| 欧美成人性战久久| 欧美精选午夜久久久乱码6080| 欧洲视频一区二区| 色94色欧美sute亚洲线路一久| proumb性欧美在线观看| 不卡电影一区二区三区| 成人自拍视频在线| 成人午夜大片免费观看| 国产综合色在线| 国产精品66部| 成人免费视频网站在线观看| 国产夫妻精品视频| 丁香一区二区三区| av男人天堂一区| 色天天综合久久久久综合片| 在线观看网站黄不卡| 欧美色中文字幕| 91.com在线观看| 精品福利在线导航| 久久夜色精品国产噜噜av| 国产人妖乱国产精品人妖| 国产精品久久久久aaaa樱花| 1区2区3区精品视频| 一区二区三区欧美久久| 亚洲v日本v欧美v久久精品| 偷拍一区二区三区四区| 麻豆成人免费电影| 国产激情视频一区二区在线观看 | 亚洲图片欧美视频| 日本成人在线网站| 国产黄色91视频| 99视频精品在线| 欧美人妇做爰xxxⅹ性高电影 | 欧美日韩中文另类| 欧美不卡一二三| 国产精品人成在线观看免费| 一区二区三区免费网站| 蜜臀va亚洲va欧美va天堂| 国产精品资源在线观看| 一本久久a久久免费精品不卡| 欧美日韩午夜在线| 久久久精品综合| 一区二区三区四区激情| 美女国产一区二区三区| 99re视频精品| 日韩免费高清电影| 亚洲一卡二卡三卡四卡五卡| 日韩avvvv在线播放| 国产99久久久久| 精品视频在线免费看| 国产色婷婷亚洲99精品小说| 一区二区三区四区精品在线视频| 久久国产麻豆精品| 色综合久久综合网欧美综合网 | 精品乱人伦小说| 亚洲综合色噜噜狠狠| 久久se精品一区精品二区| 97成人超碰视| 欧美mv日韩mv国产网站| 亚洲综合色区另类av| 成人精品国产一区二区4080| 91精品国产综合久久香蕉的特点| 国产精品国产三级国产普通话三级| 日本一道高清亚洲日美韩| av午夜精品一区二区三区| 精品福利av导航| 偷拍与自拍一区| 在线看日本不卡| 国产精品伦理一区二区| 精品亚洲国内自在自线福利| 欧美亚洲一区二区在线| 久久久五月婷婷| 男女视频一区二区| 欧美三级三级三级爽爽爽| 亚洲欧美在线aaa| 丰满岳乱妇一区二区三区| 日韩欧美一级精品久久| 日韩中文字幕一区二区三区| 色综合天天综合色综合av| 一级做a爱片久久| 国产成人在线观看免费网站| 欧美一区午夜精品| 亚洲一区二区综合| 色久优优欧美色久优优| 国产精品久久久久aaaa| 国产一区二区三区视频在线播放| 日韩一区二区高清| 图片区小说区区亚洲影院| 欧美日韩美女一区二区| 亚洲国产一区二区视频| 欧美三级中文字幕在线观看| 一区二区三区免费网站| 欧美中文字幕一区二区三区| 亚洲国产综合色| 欧美日本在线视频|