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

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

?? arch_x86.cpp

?? 小型的操作系統開發的原代碼
?? CPP
字號:
//***********************************************************************/
//    Author                    : Garry
//    Original Date             : Sep,18 2006
//    Module Name               : ARCH_X86.CPP
//    Module Funciton           : 
//                                This module countains CPU specific code,in this file,
//                                Intel X86 series CPU's specific code is included.
//
//    Last modified Author      :
//    Last modified Date        :
//    Last modified Content     :
//                                1.
//                                2.
//    Lines number              :
//***********************************************************************/

#ifndef __STDAFX_H__
#include "..\INCLUDE\StdAfx.h"
#endif

#include "ARCH.H"

//
//This routine switches the current executing path to the new one identified
//by lpContext.
//
__declspec(naked) VOID __SwitchTo(__KERNEL_THREAD_CONTEXT* lpContext)
{
	__asm{
		push ebp
		mov ebp,esp
		mov esp,dword ptr [ebp + 0x08]  //Restore ESP.
		pop ebp
		pop edi
		pop esi
		pop edx
		pop ecx
		pop ebx

		mov al,0x20  //Dismiss interrupt controller.
		out 0x20,al
		out 0xa0,al

		pop eax
		iretd
	}
}

//
//These three global variables are used as temp variables
//by __SaveAndSwitch routine.
//
static DWORD dwTmpEip = 0;
static DWORD dwTmpEax = 0;
static DWORD dwTmpEbp = 0;

//
//This routine saves current kernel thread's context,and switch
//to the new kernel thread.
//
__declspec(naked) VOID __SaveAndSwitch(__KERNEL_THREAD_CONTEXT** lppOldContext,
									   __KERNEL_THREAD_CONTEXT** lppNewContext)
{
	__asm{
		mov dwTmpEbp,esp
		pop dwTmpEip
		mov dwTmpEax,eax //Save EAX.
		pushfd           //Save EFlags.
		xor eax,eax
		mov ax,cs
		push eax         //Save CS.
		push dwTmpEip    //Save EIP.
		push dwTmpEax    //Save EAX.
		push ebx
		push ecx
		push edx
		push esi
		push edi
		push ebp

		//Now,we have build the target stack frame,then save it.
		mov ebp,dwTmpEbp
		mov ebx,dword ptr [ebp + 0x04]
		mov dword ptr [ebx],esp  //Save old stack frame.

		//Restore the new thread's context and switch to it.
		mov ebx,dword ptr [ebp + 0x08]
		mov esp,dword ptr [ebx]  //Restore new stack.
		pop ebp
		pop edi
		pop esi
		pop edx
		pop ecx
		pop ebx
		pop eax
		iretd
	}
}

//
//This routine initializes a kernel thread's context.
//This routine's action depends on different platform.
//
VOID InitKernelThreadContext(__KERNEL_THREAD_OBJECT* lpKernelThread,
							 __KERNEL_THREAD_WRAPPER lpStartAddr)
{
	DWORD*        lpStackPtr = NULL;
	DWORD         dwStackSize = 0;

	if((NULL == lpKernelThread) || (NULL == lpStartAddr))  //Invalid parameters.
	{
		return;
	}

//Define a macro to make the code readable.
#define __PUSH(stackptr,val) \
	do{  \
	(DWORD*)(stackptr) -= 1; \
	*((DWORD*)stackptr) = (DWORD)(val); \
	}while(0)

	lpStackPtr = (DWORD*)lpKernelThread->lpInitStackPointer;

	__PUSH(lpStackPtr,lpKernelThread);       //Push lpKernelThread to stack.
	__PUSH(lpStackPtr,NULL);                 //Push a new return address,simulate a call.
	__PUSH(lpStackPtr,INIT_EFLAGS_VALUE);    //Push EFlags.
	__PUSH(lpStackPtr,0x00000008);           //Push CS.
	__PUSH(lpStackPtr,lpStartAddr);  //Push start address.
	__PUSH(lpStackPtr,0L);                   //Push eax.
	__PUSH(lpStackPtr,0L);
	__PUSH(lpStackPtr,0L);
	__PUSH(lpStackPtr,0L);
	__PUSH(lpStackPtr,0L);
	__PUSH(lpStackPtr,0L);
	__PUSH(lpStackPtr,0L);

	//Save context.
	lpKernelThread->lpKernelThreadContext = (__KERNEL_THREAD_CONTEXT*)lpStackPtr;
	return;
}

//Get time stamp counter.
VOID __GetTsc(__U64* lpResult)
{
	__asm{
		push eax
		push edx
		push ebx
		rdtsc    //Read time stamp counter.
		mov ebx,dword ptr [ebp + 0x08]
		mov dword ptr [ebx],eax
		mov dword ptr [ebx + 0x04],edx
		pop ebx
		pop edx
		pop eax
	}
}

#define CLOCK_PER_MICROSECOND 1024  //Assume the CPU's clock is 1G Hz.

VOID __MicroDelay(DWORD dwmSeconds)
{
	__U64    u64CurrTsc;
	__U64    u64TargetTsc;

	__GetTsc(&u64TargetTsc);
	u64CurrTsc.dwHighPart = 0;
	u64CurrTsc.dwLowPart  = dwmSeconds;
	//u64Mul(&u64CurrTsc,CLOCK_PER_MICROSECOND);
	u64RotateLeft(&u64CurrTsc,10);
	u64Add(&u64TargetTsc,&u64CurrTsc,&u64TargetTsc);
	while(TRUE)
	{
		__GetTsc(&u64CurrTsc);
		if(MoreThan(&u64CurrTsc,&u64TargetTsc))
		{
			break;
		}
	}
	return;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲福利一二三区| 亚洲精品国产一区二区精华液| 成人妖精视频yjsp地址| 亚洲一区二区综合| 久久久精品欧美丰满| 色狠狠桃花综合| 国产乱色国产精品免费视频| 国产成人在线视频网站| 一区二区三区四区乱视频| www欧美成人18+| 欧美美女直播网站| 91激情五月电影| 粉嫩欧美一区二区三区高清影视 | 一区二区三区不卡在线观看| 精品国产乱码久久久久久久| 欧美日本乱大交xxxxx| www.欧美.com| 国产成人精品亚洲日本在线桃色| 日日噜噜夜夜狠狠视频欧美人| 亚洲同性同志一二三专区| 久久综合九色综合欧美98 | 一本久道久久综合中文字幕| 国内不卡的二区三区中文字幕| 偷拍自拍另类欧美| 亚洲国产一二三| 中文字幕中文在线不卡住| 国产日韩精品一区二区三区在线| 精品国产sm最大网站免费看| 日韩一区二区免费在线电影| 69堂亚洲精品首页| 欧美高清精品3d| 88在线观看91蜜桃国自产| 欧美日韩在线电影| 欧美三级日韩三级国产三级| 欧美三级视频在线| 欧美卡1卡2卡| 欧美一卡二卡在线| 精品久久人人做人人爱| 日韩欧美精品在线| 精品少妇一区二区三区在线视频| 日韩视频免费观看高清在线视频| 欧美一个色资源| 亚洲精品一线二线三线无人区| 欧美成人国产一区二区| 久久综合精品国产一区二区三区| 亚洲精品在线一区二区| 国产目拍亚洲精品99久久精品| 欧美激情在线免费观看| 综合分类小说区另类春色亚洲小说欧美| 中文字幕在线一区| 一区二区三区在线视频免费观看| 一区二区三区精品在线| 丝袜美腿一区二区三区| 美女视频黄久久| 韩国精品免费视频| 国产高清不卡一区二区| 精品国产不卡一区二区三区| 精品99一区二区| 国产精品国产三级国产aⅴ入口| 国产精品国产三级国产aⅴ中文 | 久久精品国产精品亚洲精品| 狠狠色丁香久久婷婷综合_中 | 亚洲欧美一区二区久久| 亚洲午夜私人影院| 久久精品免费看| 国产91丝袜在线播放| 色婷婷一区二区三区四区| 欧美日韩不卡一区二区| 久久影视一区二区| 国产精品传媒视频| 日本亚洲欧美天堂免费| 国产99久久久精品| 欧美日韩一级大片网址| 精品人伦一区二区色婷婷| 国产精品少妇自拍| 亚瑟在线精品视频| 国产一区二区视频在线播放| 91片在线免费观看| 日韩欧美一二三| 中文字幕一区二区三| 日本亚洲欧美天堂免费| 99久久99久久精品免费观看| 91精品国产综合久久久久久漫画| 国产欧美日韩在线观看| 亚洲午夜私人影院| 国产91精品欧美| 777a∨成人精品桃花网| 亚洲色图欧美激情| 麻豆专区一区二区三区四区五区| 97精品超碰一区二区三区| 欧美一区二区三区在| 亚洲视频 欧洲视频| 精品亚洲国产成人av制服丝袜| 一本一道久久a久久精品| 精品福利av导航| 午夜成人在线视频| 99视频在线观看一区三区| 日韩免费视频一区二区| 一级女性全黄久久生活片免费| 国产乱一区二区| 欧美一区二视频| 一区二区三区四区在线播放| 懂色一区二区三区免费观看| 9191成人精品久久| 亚洲国产综合在线| 不卡一区二区在线| 国产欧美日韩卡一| 秋霞国产午夜精品免费视频| 欧美亚洲国产一区二区三区 | 日韩二区三区在线观看| 91丨porny丨首页| 国产欧美日韩亚州综合| 激情综合亚洲精品| 91麻豆精品国产91久久久资源速度 | 欧美一区二区三区精品| 一级日本不卡的影视| 91蜜桃传媒精品久久久一区二区| 国产网红主播福利一区二区| 国内精品在线播放| 亚洲美女精品一区| 成人av第一页| 中文字幕成人av| 国产在线精品一区二区 | 亚洲欧洲另类国产综合| 国产一区二区美女| 欧美成人精品高清在线播放| 热久久免费视频| 欧美一级免费观看| 日韩不卡一区二区三区| 欧美情侣在线播放| 日韩精品国产精品| 欧美一卡二卡三卡四卡| 美女视频黄免费的久久| 欧美r级电影在线观看| 国产自产视频一区二区三区| 欧美精品一区二区三区蜜桃视频| 精品在线一区二区| 精品久久久久一区二区国产| 久久国产精品无码网站| 精品国内二区三区| 黑人巨大精品欧美黑白配亚洲| 久久男人中文字幕资源站| 国产乱一区二区| 国产精品视频第一区| 91美女片黄在线观看91美女| 一区二区三区四区高清精品免费观看| 欧美视频中文一区二区三区在线观看| 亚洲一区二区三区不卡国产欧美| 欧美日本国产视频| 久久精品免费观看| 国产午夜精品一区二区| av电影一区二区| 亚洲一二三四区不卡| 91精品国产日韩91久久久久久| 久久精品国产精品青草| 国产欧美精品一区aⅴ影院| 99精品视频一区二区三区| 亚洲欧美日韩国产综合| 欧美喷潮久久久xxxxx| 美女视频网站久久| 国产精品伦一区二区三级视频| 91行情网站电视在线观看高清版| 亚洲18女电影在线观看| 精品国产伦一区二区三区观看体验 | 麻豆国产精品官网| 国产色产综合产在线视频| 91一区二区三区在线播放| 亚洲国产成人精品视频| 欧美va在线播放| 99精品欧美一区二区三区小说 | 亚洲精品中文字幕乱码三区| 欧美人牲a欧美精品| 国产最新精品免费| 自拍偷拍亚洲激情| 欧美一区二区三区日韩视频| 国产在线精品视频| 亚洲高清在线视频| 久久久久久久久蜜桃| 91国模大尺度私拍在线视频| 美女www一区二区| 亚洲免费av高清| 精品久久人人做人人爰| 欧洲日韩一区二区三区| 国产真实乱子伦精品视频| 亚洲一区在线免费观看| 2019国产精品| 欧美日韩另类一区| www.欧美.com| 激情欧美一区二区| 亚洲大型综合色站| 欧美激情一区在线观看| 91精品啪在线观看国产60岁| 久久免费视频色| 欧美午夜精品免费| 国产成人免费在线观看| 日韩和欧美的一区| 亚洲视频电影在线| 国产欧美一区二区在线观看| 欧美一级片在线观看| 欧美唯美清纯偷拍|