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

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

?? dbgarchlib.c

?? vxwork源代碼
?? C
字號:
/* dbgArchLib.c - i80x86 architecture-specific debugging facilities *//* Copyright 1984-2001 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history--------------------01h,20nov01,hdn  doc clean up for 5.5.  revived edi() - eflags().01g,08jan98,dbt  modified for new breakpoint scheme01f,10feb95,jdi  doc tweak for 5.2.01e,14dec93,hdn  added _archHelp_msg.01d,29nov93,hdn  added eax() - eflags().01c,27aug93,hdn  added _dbgTaskPCSet().01b,16jun93,hdn  updated to 5.1.		  - changed functions to ansi style		  - changed VOID to void		  - changed copyright notice01a,08jul92,hdn  written based on tron/dbgLib.c.*//*DESCRIPTIONThis module provides the architecture dependent support functions fordbgLib. x86 including P5(Pentium), P6(PentiumPro, II, III), and P7(Pentium4) familyprocessors have four breakpoint registers and the following types of hardware breakpoint:.CS   BRK_INST             /@ instruction hardware breakpoint @/   BRK_DATAW1           /@ data write 1 byte breakpoint @/   BRK_DATAW2           /@ data write 2 byte breakpoint @/   BRK_DATAW4           /@ data write 4 byte breakpoint @/   BRK_DATARW1          /@ data read-write 1 byte breakpoint @/   BRK_DATARW2          /@ data read-write 2 byte breakpoint @/   BRK_DATARW4          /@ data read-write 4 byte breakpoint @/.CENOMANUAL*//* LINTLIBRARY */#include "vxWorks.h"#include "taskLib.h"#include "taskArchLib.h"#include "intLib.h"#include "regs.h"#include "iv.h"#include "cacheLib.h"#include "ioLib.h"#include "dsmLib.h"#include "vxLib.h"#include "usrLib.h"#include "stdio.h"#include "dbgLib.h"/* defines */#define DSM(addr,inst,mask)     ((*(addr) & (mask)) == (inst))/* externals */IMPORT int 	dsmInst ();/* globals */char * _archHelp_msg = #ifdef  DBG_HARDWARE_BP    "bh addr[,access[,task[,count[,quiet]]]] Set hardware breakpoint\n"    "         access :      0 - instruction        1 - write 1 byte\n"    "                       3 - read/write 1 byte  5 - write 2 bytes\n"    "                       7 - read/write 2 bytes d - write 4 bytes\n"    "                       f - read/write 4 bytes"#endif	/* DBG_HARDWARE_BP */    "\n";/* forward declarations */LOCAL int	getOneReg (int taskId, int regCode);/********************************************************************************* _dbgArchInit - architecture dependent initialization routine** This routine initialize global function pointers that are architecture * specific.** RETURNS: N/A** NOMANUAL*/void _dbgArchInit (void)    {    _dbgDsmInstRtn = (FUNCPTR) dsmInst;    }/********************************************************************************* _dbgRetAdrsGet - get a next instruction for cret ()** if next instruction is a ENTER or RET, return address is on top of stack.* otherwise it follows saved frame pointer.*** NOMANUAL*/INSTR * _dbgRetAdrsGet    (    REG_SET *	pRegSet		/* register set */    )    {    INSTR *returnAddress;    if (DSM(pRegSet->pc,   PUSH_EBP, PUSH_EBP_MASK) && 	DSM(pRegSet->pc+1, MOV_ESP0, MOV_ESP0_MASK) &&	DSM(pRegSet->pc+2, MOV_ESP1, MOV_ESP1_MASK))	{	returnAddress = *(INSTR **)pRegSet->spReg;	}    else if (DSM(pRegSet->pc-1, PUSH_EBP, PUSH_EBP_MASK) && 	     DSM(pRegSet->pc,   MOV_ESP0, MOV_ESP0_MASK) &&	     DSM(pRegSet->pc+1, MOV_ESP1, MOV_ESP1_MASK))	{	returnAddress = *((INSTR **)pRegSet->spReg + 1);	}    else if (DSM(pRegSet->pc, ENTER, ENTER_MASK))	{	returnAddress = *(INSTR **)pRegSet->spReg;	}    else if ((DSM(pRegSet->pc, RET,    RET_MASK)) ||	     (DSM(pRegSet->pc, RETADD, RETADD_MASK)))	{	returnAddress = *(INSTR **)pRegSet->spReg;	}    else	{	returnAddress = *((INSTR **)pRegSet->fpReg + 1);	}    return (returnAddress);    }/********************************************************************************* _dbgFuncCallCheck - check next instruction** This routine checks to see if the next instruction is a CALL* If it is, it returns TRUE, otherwise, returns FALSE.** RETURNS: TRUE if next instruction is a CALL, or FALSE otherwise.** NOMANUAL*/BOOL _dbgFuncCallCheck    (    INSTR * addr			/* pointer to instruction */    )    {    return ((DSM (addr,		CALL_INDIR0,	CALL_INDIR0_MASK) &&	     DSM (addr + 1,	CALL_INDIR1,	CALL_INDIR1_MASK)) || 	    (DSM (addr,		CALL_DIR,	CALL_DIR_MASK)));    }/********************************************************************************* _dbgInstSizeGet - set up the breakpoint instruction** RETURNS: size of the instruction at specified location.** NOMANUAL*/int _dbgInstSizeGet    (    INSTR * pBrkInst		/* pointer to hold breakpoint instruction */    )    {    return (dsmNbytes (pBrkInst));    }/********************************************************************************* _dbgTaskPCGet - get task's program counter PC** RETURNS:task's program counter** NOMANUAL*/INSTR * _dbgTaskPCGet    (    int tid	/* task's id */    )    {    REG_SET	regSet;    (void) taskRegsGet (tid, &regSet);    return ((INSTR *) regSet.pc);    }/********************************************************************************* _dbgTaskPCSet - set task's program counter PC** RETURNS: N/A** NOMANUAL*/void _dbgTaskPCSet    (    int		task,		/* task id */    INSTR *	pc,		/* new PC */    INSTR *	npc		/* not supported on I80X86 */    )    {    REG_SET regSet;    if (taskRegsGet (task, &regSet) != OK)        return;    regSet.pc = pc;    (void)taskRegsSet (task, &regSet);    }#ifdef	DBG_HARDWARE_BP/********************************************************************************* _dbgBrkDisplayHard - display a hardware breakpoint** This routine displays a hardware breakpoint.** NOMANUAL*/void _dbgBrkDisplayHard    (    BRKPT *	pBp	/* breakpoint table entry */    )    {    int type;    if ((pBp->bp_flags & BRK_HARDWARE) == 0)	return;    type = pBp->bp_flags & BRK_HARDMASK;    printf (" (hard-");    switch (type)	{	case BRK_INST:	    printf ("inst)");	    break;	case BRK_DATAW1:	    printf ("dataw1)");		break;	case BRK_DATAW2:	    printf ("dataw2)");	    break;	case BRK_DATAW4:	    printf ("dataw4)");	    break;	case BRK_DATARW1:	    printf ("datarw1)");	    break;	case BRK_DATARW2:	    printf ("datarw2)");	    break;	case BRK_DATARW4:	    printf ("datarw4)");	    break;	default:	    printf ("unknown)");	    break;	}    }#endif	/* DBG_HARDWARE_BP *//********************************************************************************* getOneReg - return the contents of one register** Given a task's ID, this routine returns the contents of the register* specified by the register code.  This routine is used by eax, edx, etc.* The register codes are defined in dbgI86Lib.h.** RETURNS: register contents, or ERROR.*/LOCAL int getOneReg (taskId, regCode)    int		taskId;		/* task's id, 0 means default task */    int		regCode;	/* code for specifying register */    {    REG_SET	regSet;		/* get task's regs into here */    taskId = taskIdFigure (taskId);	/* translate super name to id */    if (taskId == ERROR)		/* couldn't figure out super name */	return (ERROR);    taskId = taskIdDefault (taskId);	/* set the default id */    if (taskRegsGet (taskId, &regSet) != OK)	return (ERROR);    switch (regCode)	{	case EDI: return (regSet.edi);	case ESI: return (regSet.esi);	case EBP: return (regSet.ebp);	case ESP: return (regSet.esp);	case EBX: return (regSet.ebx);	case EDX: return (regSet.edx);	case ECX: return (regSet.ecx);	case EAX: return (regSet.eax);	case EFLAGS: return (regSet.eflags);	}    return (ERROR);		/* unknown regCode */    }/********************************************************************************* edi - return the contents of register `edi' (also `esi' - `eax') (x86)** This command extracts the contents of register `edi' from the TCB of a* specified task.  If <taskId> is omitted or zero, the last task* referenced is assumed.** Similar routines are provided for all general registers (`edi' - `eax'):* edi() - eax().** The stack pointer is accessed via eax().** RETURNS: The contents of register `edi' (or the requested register).** SEE ALSO:* .pG "Debugging"*/int edi    (    int taskId		/* task ID, 0 means default task */    )    {    return (getOneReg (taskId, EDI));    }int esi (taskId) int taskId; { return (getOneReg (taskId, ESI)); }int ebp (taskId) int taskId; { return (getOneReg (taskId, EBP)); }int esp (taskId) int taskId; { return (getOneReg (taskId, ESP)); }int ebx (taskId) int taskId; { return (getOneReg (taskId, EBX)); }int edx (taskId) int taskId; { return (getOneReg (taskId, EDX)); }int ecx (taskId) int taskId; { return (getOneReg (taskId, ECX)); }int eax (taskId) int taskId; { return (getOneReg (taskId, EAX)); }/********************************************************************************* eflags - return the contents of the status register (x86)** This command extracts the contents of the status register from the TCB of a* specified task.  If <taskId> is omitted or zero, the last task referenced is* assumed.** RETURNS: The contents of the status register.** SEE ALSO:* .pG "Debugging"*/int eflags    (    int taskId		/* task ID, 0 means default task */    )    {    return (getOneReg (taskId, EFLAGS));    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
全部av―极品视觉盛宴亚洲| 欧美精品乱码久久久久久按摩 | 日本一区二区三级电影在线观看| 亚洲男人天堂av| 久久狠狠亚洲综合| 色婷婷av一区二区三区软件| 国产亚洲午夜高清国产拍精品| 亚洲一区二区视频在线| 成人永久aaa| 欧美精品一区二区在线播放| 亚洲综合在线第一页| 国产不卡视频在线观看| 日韩午夜在线影院| 亚洲国产成人高清精品| 色婷婷香蕉在线一区二区| 国产亚洲综合在线| 精品一区中文字幕| 日韩一区二区三区免费看| 亚洲v日本v欧美v久久精品| 91在线免费看| 国产精品不卡在线| 成人sese在线| 国产精品久99| av成人动漫在线观看| 国产精品视频一二| 国产91精品在线观看| www日韩大片| 国产一区不卡视频| 久久精品视频在线免费观看 | 亚洲成人av电影| 日本丰满少妇一区二区三区| 中文字幕欧美一| 一本久久综合亚洲鲁鲁五月天| 国产精品乱码一区二区三区软件| 成人一级视频在线观看| 亚洲国产岛国毛片在线| 成人性生交大片免费看在线播放| 国产精品家庭影院| 一本到不卡精品视频在线观看 | 天堂va蜜桃一区二区三区漫画版| 在线视频你懂得一区二区三区| 亚洲综合999| 欧美美女一区二区| 蜜臀av国产精品久久久久| 日韩欧美电影一二三| 久久99精品国产| 国产欧美精品区一区二区三区| 成人免费看片app下载| 国产精品久久久久久久久果冻传媒| 91香蕉视频污| 午夜欧美在线一二页| 日韩欧美一级二级三级久久久| 韩国中文字幕2020精品| 久久久久久久电影| 成人网在线播放| 亚洲第一综合色| 亚洲精品一线二线三线| 9色porny自拍视频一区二区| 亚洲国产人成综合网站| 欧美不卡视频一区| fc2成人免费人成在线观看播放| 夜夜精品视频一区二区| 日韩一区二区三区电影| 成人免费毛片高清视频| 亚洲一区二区三区小说| 精品理论电影在线观看| 91社区在线播放| 国内成人精品2018免费看| 亚洲欧美电影院| 欧美成人a∨高清免费观看| 99久久免费国产| 精品综合免费视频观看| 中文字幕一区二区在线观看| 宅男在线国产精品| 成人av在线播放网址| 美日韩一级片在线观看| 亚洲女人小视频在线观看| 精品国产一区二区三区忘忧草| 色综合中文字幕国产 | 日本一区二区三区四区在线视频| 欧美综合一区二区| 国产精品一区二区免费不卡| 亚洲一区二区视频| 日本一区二区不卡视频| 日韩一区二区中文字幕| 色婷婷久久99综合精品jk白丝| 狠狠色狠狠色合久久伊人| 亚洲黄色录像片| 中文字幕av一区 二区| 欧美成人性战久久| 欧美日韩专区在线| 97精品久久久午夜一区二区三区 | 人人超碰91尤物精品国产| 日韩一区在线免费观看| 久久精品亚洲国产奇米99| 日韩免费在线观看| 欧美三级日本三级少妇99| 91丝袜美腿高跟国产极品老师 | 亚洲欧美日韩中文字幕一区二区三区| 欧美videos大乳护士334| 欧美日韩三级一区| 色域天天综合网| 99精品国产热久久91蜜凸| 国产黄色91视频| 国产精品自在在线| 激情综合色综合久久| 老司机精品视频导航| 日韩高清不卡一区二区三区| 香蕉乱码成人久久天堂爱免费| 亚洲一区二区三区视频在线 | 中文字幕亚洲精品在线观看| 国产欧美日韩精品一区| 国产日韩影视精品| 久久精品亚洲乱码伦伦中文| 久久久久久久综合色一本| 欧美大片一区二区| 欧美v日韩v国产v| 精品国产自在久精品国产| 久久影院午夜论| 欧美国产一区视频在线观看| 国产精品久久午夜夜伦鲁鲁| 中文字幕日本乱码精品影院| 亚洲另类中文字| 亚洲高清不卡在线| 免费看日韩a级影片| 激情另类小说区图片区视频区| 国产一区二区三区精品欧美日韩一区二区三区 | 亚洲一区二区欧美日韩 | 国产在线播放一区二区三区| 国产麻豆精品一区二区| 国产成人aaaa| a在线播放不卡| 在线视频欧美精品| 91精品国产一区二区| 日韩免费视频一区| 国产欧美精品一区二区色综合| 国产精品久久免费看| 亚洲国产毛片aaaaa无费看| 婷婷国产v国产偷v亚洲高清| 精品一区二区久久| 99精品在线免费| 欧美日韩一区二区欧美激情| 精品捆绑美女sm三区| 国产精品免费久久久久| 亚洲狠狠爱一区二区三区| 久久成人精品无人区| 成人午夜激情在线| 欧美日韩在线综合| 久久婷婷一区二区三区| 亚洲免费观看视频| 久久国产综合精品| 播五月开心婷婷综合| 欧美区视频在线观看| 亚洲国产精品精华液2区45| 亚洲综合图片区| 国产在线视频一区二区| 91成人在线免费观看| 久久久噜噜噜久久中文字幕色伊伊 | 精品91自产拍在线观看一区| 亚洲人精品一区| 精品一区二区三区视频在线观看| 91浏览器在线视频| 久久蜜臀精品av| 亚洲午夜电影在线观看| 成人小视频免费在线观看| 日韩一级免费一区| 一区二区三区在线视频观看 | 国产精品毛片久久久久久| 婷婷综合在线观看| 99久久综合狠狠综合久久| 精品国产乱码久久久久久久久| 一区二区欧美视频| 国产91精品欧美| 精品国产1区二区| 三级在线观看一区二区| 91麻豆国产福利精品| 国产精品久久久久四虎| 国产露脸91国语对白| 7777精品久久久大香线蕉| 亚洲另类色综合网站| 国产不卡视频一区二区三区| 久久综合色鬼综合色| 另类的小说在线视频另类成人小视频在线| 色婷婷精品久久二区二区蜜臀av | 91麻豆.com| 中文字幕av在线一区二区三区| 韩国v欧美v亚洲v日本v| 91精品国产福利| 丝袜脚交一区二区| 欧美日韩精品欧美日韩精品一综合| 国产精品狼人久久影院观看方式| 国产精品99久久久久久宅男| 久久蜜臀精品av| 国内不卡的二区三区中文字幕| 精品国产自在久精品国产| 久久爱另类一区二区小说| 91精品国产综合久久精品app | 亚洲精品久久7777| 91女神在线视频| 亚洲免费在线看|