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

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

?? debug.c

?? u-boot1.3.0的原碼,從配了網絡驅動和FLASH的驅動,并該用ESC竟如
?? C
字號:
/******************************************************************************                       Realmode X86 Emulator Library**               Copyright (C) 1991-2004 SciTech Software, Inc.*                    Copyright (C) David Mosberger-Tang*                      Copyright (C) 1999 Egbert Eich**  ========================================================================**  Permission to use, copy, modify, distribute, and sell this software and*  its documentation for any purpose is hereby granted without fee,*  provided that the above copyright notice appear in all copies and that*  both that copyright notice and this permission notice appear in*  supporting documentation, and that the name of the authors not be used*  in advertising or publicity pertaining to distribution of the software*  without specific, written prior permission.  The authors makes no*  representations about the suitability of this software for any purpose.*  It is provided "as is" without express or implied warranty.**  THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,*  INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO*  EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR*  CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF*  USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR*  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR*  PERFORMANCE OF THIS SOFTWARE.**  ========================================================================** Language:     ANSI C* Environment:  Any* Developer:    Kendall Bennett** Description:  This file contains the code to handle debugging of the*               emulator.*****************************************************************************/#include <stdarg.h>#include <common.h>#if defined(CONFIG_BIOSEMU)#include "x86emu/x86emui.h"/*----------------------------- Implementation ----------------------------*/#ifdef DEBUGstatic void print_encoded_bytes(u16 s, u16 o);static void print_decoded_instruction(void);static int parse_line(char *s, int *ps, int *n);/* should look something like debug's output. */void X86EMU_trace_regs(void){	if (DEBUG_TRACE()) {		x86emu_dump_regs();	}	if (DEBUG_DECODE() && !DEBUG_DECODE_NOPRINT()) {		printk("%04x:%04x ", M.x86.saved_cs, M.x86.saved_ip);		print_encoded_bytes(M.x86.saved_cs, M.x86.saved_ip);		print_decoded_instruction();	}}void X86EMU_trace_xregs(void){	if (DEBUG_TRACE()) {		x86emu_dump_xregs();	}}void x86emu_just_disassemble(void){	/*	 * This routine called if the flag DEBUG_DISASSEMBLE is set kind	 * of a hack!	 */	printk("%04x:%04x ", M.x86.saved_cs, M.x86.saved_ip);	print_encoded_bytes(M.x86.saved_cs, M.x86.saved_ip);	print_decoded_instruction();}static void disassemble_forward(u16 seg, u16 off, int n){	X86EMU_sysEnv tregs;	int i;	u8 op1;	/*	 * hack, hack, hack.  What we do is use the exact machinery set up	 * for execution, except that now there is an additional state	 * flag associated with the "execution", and we are using a copy	 * of the register struct.  All the major opcodes, once fully	 * decoded, have the following two steps: TRACE_REGS(r,m);	 * SINGLE_STEP(r,m); which disappear if DEBUG is not defined to	 * the preprocessor.  The TRACE_REGS macro expands to:	 *	 * if (debug&DEBUG_DISASSEMBLE)	 *     {just_disassemble(); goto EndOfInstruction;}	 *     if (debug&DEBUG_TRACE) trace_regs(r,m);	 *	 * ......  and at the last line of the routine.	 *	 * EndOfInstruction: end_instr();	 *	 * Up to the point where TRACE_REG is expanded, NO modifications	 * are done to any register EXCEPT the IP register, for fetch and	 * decoding purposes.	 *	 * This was done for an entirely different reason, but makes a	 * nice way to get the system to help debug codes.	 */	tregs = M;	tregs.x86.R_IP = off;	tregs.x86.R_CS = seg;	/* reset the decoding buffers */	tregs.x86.enc_str_pos = 0;	tregs.x86.enc_pos = 0;	/* turn on the "disassemble only, no execute" flag */	tregs.x86.debug |= DEBUG_DISASSEMBLE_F;	/* DUMP NEXT n instructions to screen in straight_line fashion */	/*	 * This looks like the regular instruction fetch stream, except	 * that when this occurs, each fetched opcode, upon seeing the	 * DEBUG_DISASSEMBLE flag set, exits immediately after decoding	 * the instruction.  XXX --- CHECK THAT MEM IS NOT AFFECTED!!!	 * Note the use of a copy of the register structure...	 */	for (i = 0; i < n; i++) {		op1 = (*sys_rdb) (((u32) M.x86.R_CS << 4) + (M.x86.R_IP++));		(x86emu_optab[op1]) (op1);	}	/* end major hack mode. */}void x86emu_check_ip_access(void){	/* NULL as of now */}void x86emu_check_sp_access(void){}void x86emu_check_mem_access(u32 dummy){	/*  check bounds, etc */}void x86emu_check_data_access(uint dummy1, uint dummy2){	/*  check bounds, etc */}void x86emu_inc_decoded_inst_len(int x){	M.x86.enc_pos += x;}void x86emu_decode_printf(char *x){	sprintf(M.x86.decoded_buf + M.x86.enc_str_pos, "%s", x);	M.x86.enc_str_pos += strlen(x);}void x86emu_decode_printf2(char *x, int y){	char temp[100];	sprintf(temp, x, y);	sprintf(M.x86.decoded_buf + M.x86.enc_str_pos, "%s", temp);	M.x86.enc_str_pos += strlen(temp);}void x86emu_end_instr(void){	M.x86.enc_str_pos = 0;	M.x86.enc_pos = 0;}static void print_encoded_bytes(u16 s, u16 o){	int i;	char buf1[64];	for (i = 0; i < M.x86.enc_pos; i++) {		sprintf(buf1 + 2 * i, "%02x", fetch_data_byte_abs(s, o + i));	}	printk("%-20s", buf1);}static void print_decoded_instruction(void){	printk("%s", M.x86.decoded_buf);}void x86emu_print_int_vect(u16 iv){	u16 seg, off;	if (iv > 256)		return;	seg = fetch_data_word_abs(0, iv * 4);	off = fetch_data_word_abs(0, iv * 4 + 2);	printk("%04x:%04x ", seg, off);}void X86EMU_dump_memory(u16 seg, u16 off, u32 amt){	u32 start = off & 0xfffffff0;	u32 end = (off + 16) & 0xfffffff0;	u32 i;	u32 current;	current = start;	while (end <= off + amt) {		printk("%04x:%04x ", seg, start);		for (i = start; i < off; i++)			printk("   ");		for (; i < end; i++)			printk("%02x ", fetch_data_byte_abs(seg, i));		printk("\n");		start = end;		end = start + 16;	}}void x86emu_single_step(void){	char s[1024];	int ps[10];	int ntok;	int cmd;	int done;	int segment;	int offset;	static int breakpoint;	static int noDecode = 1;	char *p;	if (DEBUG_BREAK()) {		if (M.x86.saved_ip != breakpoint) {			return;		} else {			M.x86.debug &= ~DEBUG_DECODE_NOPRINT_F;			M.x86.debug |= DEBUG_TRACE_F;			M.x86.debug &= ~DEBUG_BREAK_F;			print_decoded_instruction();			X86EMU_trace_regs();		}	}	done = 0;	offset = M.x86.saved_ip;	while (!done) {		printk("-");		cmd = parse_line(s, ps, &ntok);		switch (cmd) {		case 'u':			disassemble_forward(M.x86.saved_cs, (u16) offset, 10);			break;		case 'd':			if (ntok == 2) {				segment = M.x86.saved_cs;				offset = ps[1];				X86EMU_dump_memory(segment, (u16) offset, 16);				offset += 16;			} else if (ntok == 3) {				segment = ps[1];				offset = ps[2];				X86EMU_dump_memory(segment, (u16) offset, 16);				offset += 16;			} else {				segment = M.x86.saved_cs;				X86EMU_dump_memory(segment, (u16) offset, 16);				offset += 16;			}			break;		case 'c':			M.x86.debug ^= DEBUG_TRACECALL_F;			break;		case 's':			M.x86.debug ^=			    DEBUG_SVC_F | DEBUG_SYS_F | DEBUG_SYSINT_F;			break;		case 'r':			X86EMU_trace_regs();			break;		case 'x':			X86EMU_trace_xregs();			break;		case 'g':			if (ntok == 2) {				breakpoint = ps[1];				if (noDecode) {					M.x86.debug |= DEBUG_DECODE_NOPRINT_F;				} else {					M.x86.debug &= ~DEBUG_DECODE_NOPRINT_F;				}				M.x86.debug &= ~DEBUG_TRACE_F;				M.x86.debug |= DEBUG_BREAK_F;				done = 1;			}			break;		case 'q':			M.x86.debug |= DEBUG_EXIT;			return;		case 'P':			noDecode = (noDecode) ? 0 : 1;			printk("Toggled decoding to %s\n",			       (noDecode) ? "FALSE" : "TRUE");			break;		case 't':		case 0:			done = 1;			break;		}	}}int X86EMU_trace_on(void){	return M.x86.debug |= DEBUG_STEP_F | DEBUG_DECODE_F | DEBUG_TRACE_F;}int X86EMU_trace_off(void){	return M.x86.debug &= ~(DEBUG_STEP_F | DEBUG_DECODE_F | DEBUG_TRACE_F);}static int parse_line(char *s, int *ps, int *n){	int cmd;	*n = 0;	while (*s == ' ' || *s == '\t')		s++;	ps[*n] = *s;	switch (*s) {	case '\n':		*n += 1;		return 0;	default:		cmd = *s;		*n += 1;	}	while (1) {		while (*s != ' ' && *s != '\t' && *s != '\n')			s++;		if (*s == '\n')			return cmd;		while (*s == ' ' || *s == '\t')			s++;		*n += 1;	}}#endif				/* DEBUG */void x86emu_dump_regs(void){	printk("\tAX=%04x  ", M.x86.R_AX);	printk("BX=%04x  ", M.x86.R_BX);	printk("CX=%04x  ", M.x86.R_CX);	printk("DX=%04x  ", M.x86.R_DX);	printk("SP=%04x  ", M.x86.R_SP);	printk("BP=%04x  ", M.x86.R_BP);	printk("SI=%04x  ", M.x86.R_SI);	printk("DI=%04x\n", M.x86.R_DI);	printk("\tDS=%04x  ", M.x86.R_DS);	printk("ES=%04x  ", M.x86.R_ES);	printk("SS=%04x  ", M.x86.R_SS);	printk("CS=%04x  ", M.x86.R_CS);	printk("IP=%04x   ", M.x86.R_IP);	if (ACCESS_FLAG(F_OF))		printk("OV ");	/* CHECKED... */	else		printk("NV ");	if (ACCESS_FLAG(F_DF))		printk("DN ");	else		printk("UP ");	if (ACCESS_FLAG(F_IF))		printk("EI ");	else		printk("DI ");	if (ACCESS_FLAG(F_SF))		printk("NG ");	else		printk("PL ");	if (ACCESS_FLAG(F_ZF))		printk("ZR ");	else		printk("NZ ");	if (ACCESS_FLAG(F_AF))		printk("AC ");	else		printk("NA ");	if (ACCESS_FLAG(F_PF))		printk("PE ");	else		printk("PO ");	if (ACCESS_FLAG(F_CF))		printk("CY ");	else		printk("NC ");	printk("\n");}void x86emu_dump_xregs(void){	printk("\tEAX=%08x  ", M.x86.R_EAX);	printk("EBX=%08x  ", M.x86.R_EBX);	printk("ECX=%08x  ", M.x86.R_ECX);	printk("EDX=%08x  \n", M.x86.R_EDX);	printk("\tESP=%08x  ", M.x86.R_ESP);	printk("EBP=%08x  ", M.x86.R_EBP);	printk("ESI=%08x  ", M.x86.R_ESI);	printk("EDI=%08x\n", M.x86.R_EDI);	printk("\tDS=%04x  ", M.x86.R_DS);	printk("ES=%04x  ", M.x86.R_ES);	printk("SS=%04x  ", M.x86.R_SS);	printk("CS=%04x  ", M.x86.R_CS);	printk("EIP=%08x\n\t", M.x86.R_EIP);	if (ACCESS_FLAG(F_OF))		printk("OV ");	/* CHECKED... */	else		printk("NV ");	if (ACCESS_FLAG(F_DF))		printk("DN ");	else		printk("UP ");	if (ACCESS_FLAG(F_IF))		printk("EI ");	else		printk("DI ");	if (ACCESS_FLAG(F_SF))		printk("NG ");	else		printk("PL ");	if (ACCESS_FLAG(F_ZF))		printk("ZR ");	else		printk("NZ ");	if (ACCESS_FLAG(F_AF))		printk("AC ");	else		printk("NA ");	if (ACCESS_FLAG(F_PF))		printk("PE ");	else		printk("PO ");	if (ACCESS_FLAG(F_CF))		printk("CY ");	else		printk("NC ");	printk("\n");}#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜精品一区二区三区三上悠亚| 91视频观看视频| 99久久久国产精品| 精品美女在线播放| 亚洲最新视频在线观看| 粗大黑人巨茎大战欧美成人| 欧美日韩激情在线| 亚洲欧美日韩一区二区| 国产一区二区网址| 欧美伦理电影网| 亚洲靠逼com| 成人免费毛片片v| 日韩美女主播在线视频一区二区三区| 亚洲图片你懂的| 成人97人人超碰人人99| 欧美成人r级一区二区三区| 亚洲成人自拍一区| 色婷婷激情综合| 亚洲色欲色欲www在线观看| 国产成人免费视| 337p粉嫩大胆色噜噜噜噜亚洲| 亚洲超碰精品一区二区| 欧美亚洲综合一区| 一卡二卡三卡日韩欧美| 暴力调教一区二区三区| 久久久精品天堂| 久久国产福利国产秒拍| 精品乱码亚洲一区二区不卡| 免费观看30秒视频久久| 9191国产精品| 日本大胆欧美人术艺术动态| 日韩一区二区在线免费观看| 日韩电影在线免费观看| 欧美日韩视频专区在线播放| 亚洲动漫第一页| 欧美午夜一区二区三区免费大片| 一区二区国产盗摄色噜噜| 色综合婷婷久久| 亚洲精品国产视频| 欧美亚洲综合一区| 日本美女一区二区三区视频| 精品久久久久久综合日本欧美 | 国产日韩欧美一区二区三区乱码| 久久精品国产精品亚洲综合| 精品欧美久久久| 成+人+亚洲+综合天堂| 亚洲欧美一区二区三区孕妇| 欧美日韩一区二区电影| 蜜臀av一区二区在线观看| 久久综合久久综合九色| 成人激情黄色小说| 亚洲综合色在线| 91精品黄色片免费大全| 国产精品夜夜嗨| 亚洲日本va午夜在线电影| 欧美午夜免费电影| 久色婷婷小香蕉久久| 国产精品三级久久久久三级| 在线视频国内一区二区| 免费观看一级欧美片| 国产精品精品国产色婷婷| 欧美性猛交xxxxxxxx| 另类小说综合欧美亚洲| 亚洲天堂精品视频| 91精品国产一区二区三区蜜臀 | 老鸭窝一区二区久久精品| 国产欧美日韩激情| 欧美色国产精品| 成人午夜又粗又硬又大| 香蕉久久夜色精品国产使用方法| 精品免费视频.| 欧美亚日韩国产aⅴ精品中极品| 久久99九九99精品| 亚洲人妖av一区二区| 精品久久久久久久久久久久久久久久久 | 国产精品一区二区免费不卡 | 欧美最猛黑人xxxxx猛交| 日韩国产精品久久| 国产精品久久久久久亚洲毛片| 91精品国产综合久久久久久漫画| 粉嫩蜜臀av国产精品网站| 丝袜诱惑制服诱惑色一区在线观看 | 亚洲狼人国产精品| 国产午夜精品久久| 91精品国产综合久久婷婷香蕉| 成人精品国产福利| 另类综合日韩欧美亚洲| 亚洲综合免费观看高清完整版在线 | av在线播放一区二区三区| 麻豆精品一二三| 一区二区三区四区国产精品| 日本一区二区三区四区在线视频| 777久久久精品| 色噜噜狠狠一区二区三区果冻| 国产精品中文字幕欧美| 老司机免费视频一区二区| 亚洲国产精品嫩草影院| 1区2区3区国产精品| 久久久久综合网| 精品国产伦理网| 欧美一级片在线看| 制服丝袜在线91| 这里只有精品视频在线观看| 欧美性生活一区| 91九色最新地址| 色系网站成人免费| 99精品国产91久久久久久| 国产成人在线网站| 国产电影精品久久禁18| 国产在线播放一区| 精品一区二区精品| 久久精品理论片| 久久99久久精品欧美| 久久精品久久99精品久久| 日韩av在线发布| 美女在线观看视频一区二区| 日本成人中文字幕| 久久激五月天综合精品| 精品在线亚洲视频| 国产一区二区免费视频| 国产精品亚洲一区二区三区妖精| 国产精品一区在线观看乱码| 国产又黄又大久久| 岛国精品在线播放| 色诱视频网站一区| 欧美日韩久久久久久| 日韩一级免费观看| 精品久久国产老人久久综合| 精品福利一二区| 国产精品国产三级国产aⅴ中文| 中文字幕在线观看一区二区| 中文字幕视频一区| 亚洲综合激情网| 蜜桃视频在线一区| 国产成人免费网站| 欧美亚洲综合色| 精品理论电影在线| 国产精品激情偷乱一区二区∴| 亚洲狠狠丁香婷婷综合久久久| 午夜视频一区二区三区| 麻豆国产欧美日韩综合精品二区| 国产成人午夜片在线观看高清观看| 不卡在线视频中文字幕| 一本色道久久综合亚洲精品按摩| 欧美精品在线一区二区三区| 久久一留热品黄| 亚洲欧美一区二区三区孕妇| 全国精品久久少妇| 99视频一区二区三区| 欧美日韩国产成人在线免费| 久久久久久久久久久久久夜| 亚洲美女偷拍久久| 六月婷婷色综合| 在线观看免费视频综合| 久久综合成人精品亚洲另类欧美 | 欧美电视剧在线看免费| 国产精品美女久久久久久久久久久| 亚洲伊人色欲综合网| 久久国产综合精品| 欧洲视频一区二区| 久久久国产精华| 三级影片在线观看欧美日韩一区二区| 国产伦精品一区二区三区免费 | 日韩三级av在线播放| 国产精品久久777777| 久久99久久99精品免视看婷婷| 色一情一乱一乱一91av| 国产校园另类小说区| 婷婷一区二区三区| 91蝌蚪国产九色| 国产亚洲欧美色| 日本欧美一区二区| 色天使色偷偷av一区二区| 久久先锋影音av| 亚洲va韩国va欧美va| 色综合久久中文字幕综合网| 久久久久久久综合| 老司机一区二区| 51精品国自产在线| 亚洲福利一二三区| 91豆麻精品91久久久久久| 欧美国产在线观看| 国产夫妻精品视频| 久久综合狠狠综合| 久久成人免费日本黄色| 91超碰这里只有精品国产| 亚洲国产aⅴ天堂久久| 一本久久综合亚洲鲁鲁五月天| 欧美韩日一区二区三区| 久久99国产精品麻豆| 欧美一区二区三区在线| 日韩激情一二三区| 欧美精品粉嫩高潮一区二区| 亚洲成av人影院在线观看网| 欧洲一区二区三区在线| 亚洲一二三区不卡| 欧美日韩一区二区三区在线看| 一区二区三区国产精品| 在线观看亚洲专区| 亚洲成人黄色影院|