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

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

?? seh.s

?? ReactOS是一些高手根據(jù)Windows XP的內(nèi)核編寫(xiě)出的類(lèi)XP。內(nèi)核實(shí)現(xiàn)機(jī)理和API函數(shù)調(diào)用幾乎相同。甚至可以兼容XP的程序。喜歡研究系統(tǒng)內(nèi)核的人可以看一看。
?? S
字號(hào):
/* $Id: seh.s 23790 2006-08-29 19:14:18Z greatlrd $
 *
 * COPYRIGHT:         See COPYING in the top level directory
 * PROJECT:           ReactOS MSVCRT Runtime Library
 * PURPOSE:           Runtime library exception support for IA-32
 * FILE:              lib/msvcrt/except/seh.s
 * PROGRAMER:         Casper S. Hornstrup (chorns@users.sourceforge.net)
 * NOTES:             This file is shared with ntoskrnl/rtl/i386/seh.s.
 *                    Please keep them in sync.
 */

#define ExceptionContinueExecution	0
#define ExceptionContinueSearch		1
#define ExceptionNestedException	2
#define ExceptionCollidedUnwind		3

#define EXCEPTION_NONCONTINUABLE	0x01
#define EXCEPTION_UNWINDING			0x02
#define EXCEPTION_EXIT_UNWIND		0x04
#define EXCEPTION_STACK_INVALID		0x08
#define EXCEPTION_NESTED_CALL		0x10
#define EXCEPTION_TARGET_UNWIND		0x20
#define EXCEPTION_COLLIDED_UNWIND	0x40

#define EXCEPTION_UNWIND_MODE \
(  EXCEPTION_UNWINDING \
 | EXCEPTION_EXIT_UNWIND \
 | EXCEPTION_TARGET_UNWIND \
 | EXCEPTION_COLLIDED_UNWIND)

#define EREC_CODE		0x00
#define EREC_FLAGS		0x04
#define EREC_RECORD		0x08
#define EREC_ADDRESS	0x0C
#define EREC_NUMPARAMS	0x10
#define EREC_INFO		0x14

#define TRYLEVEL_NONE    -1
#define TRYLEVEL_INVALID -2

#define ER_STANDARDESP	-0x08
#define ER_EPOINTERS	-0x04
#define ER_PREVFRAME	0x00
#define ER_HANDLER		0x04
#define ER_SCOPETABLE	0x08
#define ER_TRYLEVEL		0x0C
#define ER_EBP			0x10

#define ST_TRYLEVEL		0x00
#define ST_FILTER		0x04
#define ST_HANDLER		0x08

#define CONTEXT_EDI		0x9C
#define CONTEXT_EBX		0xA4
#define CONTEXT_EIP		0xB8

.globl __local_unwind2
.globl __except_handler3
.globl __EH_prolog

// EAX = value to print
_do_debug:
	pushal
	pushl	%eax
	call	_MsvcrtDebug@4
	popal
	ret

#define LU2_TRYLEVEL	0x08
#define LU2_REGFRAME	0x04

//
// void
// _local_unwind2(PEXCEPTION_REGISTRATION RegistrationFrame,
//			      LONG TryLevel)
//
// Parameters:
//   [EDX+08h] - PEXCEPTION_REGISTRATION RegistrationFrame
//   [EDX+04h] - LONG TryLevel
// Registers:
//   EBP - EBP of call frame we are unwinding
// Returns:
//   Nothing
// Notes:
//   Run all termination handlers for a call frame from the current
//   try-level up to (but not including) the given stop try-level.
__local_unwind2:
    // Setup our call frame so we can access parameters using EDX
    //pushl    %ebp
    movl     %esp, %edx

    // FIXME: Setup an EXCEPTION_REGISTRATION entry to protect the
    // unwinding in case something goes wrong

.lu2_next_scope:

    // Keep a pointer to the exception registration in EBX
    movl     LU2_REGFRAME(%edx), %ebx

    // If we have reached the end of the chain or we're asked to stop here
    // by the caller then exit
    test     %ebx, %ebx
    je       .lu2_done

    movl     ER_TRYLEVEL(%ebx), %eax
    cmpl     $-1, %eax
    je       .lu2_done

    cmpl     LU2_TRYLEVEL(%edx), %eax
    je       .lu2_done

    // Keep a pointer to the scopetable in ESI
    movl     ER_SCOPETABLE(%ebx), %esi

    // Compute the offset of the entry in the scopetable that describes
    // the scope that is to be unwound. Put the offset in EDI.
    movl	ST_TRYLEVEL(%esi), %edi
    lea     (%edi, %edi, 2), %edi
    shll    $2, %edi
    addl    %esi, %edi

    // If this is not a termination handler then skip it
    cmpl     $0, ST_FILTER(%edi)
    jne      .lu2_next_scope

    // Save the previous try-level in the exception registration structure
    movl     ST_TRYLEVEL(%edi), %eax
    movl     %eax, ER_TRYLEVEL(%ebx)

    // Fetch the address of the termination handler
    movl     ST_HANDLER(%edi), %eax

    // Termination handlers may trash all registers so save the
    // important ones and then call the handler
    pushl    %edx
    call 	 *%eax

	// Get our base pointer back
    popl     %edx

    jmp      .lu2_next_scope

.lu2_done:

    // FIXME: Tear down the EXCEPTION_REGISTRATION entry setup to protect
    // the unwinding

	//movl	%esi, %esp
    //popl	%ebp
    ret

#define EH3_DISPCONTEXT	0x14
#define EH3_CONTEXT		0x10
#define EH3_REGFRAME	0x0C
#define EH3_ERECORD		0x08

// Parameters:
//   [ESP+14h] - PVOID DispatcherContext
//   [ESP+10h] - PCONTEXT Context
//   [ESP+0Ch] - PEXCEPTION_REGISTRATION RegistrationFrame
//   [ESP+08h] - PEXCEPTION_RECORD ExceptionRecord
// Registers:
//   Unknown
// Returns:
//   EXCEPTION_DISPOSITION - How this handler handled the exception
// Notes:
//   Try to find an exception handler that will handle the exception.
//   Traverse the entries in the scopetable that is associated with the
//   exception registration passed as a parameter to this function.
//   If an exception handler that will handle the exception is found, it
//   is called and this function never returns
__except_handler3:
    // Setup our call frame so we can access parameters using EBP
    pushl    %ebp				// Standard ESP in frame (considered part of EXCEPTION_REGISTRATION)
    movl     %esp, %ebp

    // Don't trust the direction flag to be cleared
    cld

    // Either we're called to handle an exception or we're called to unwind    
    movl	EH3_ERECORD(%ebp), %eax
    testl	$EXCEPTION_UNWIND_MODE, EREC_FLAGS(%eax)
    jnz		.eh3_unwind

    // Keep a pointer to the exception registration in EBX
    movl     EH3_REGFRAME(%ebp), %ebx

    // Build an EXCEPTION_POINTERS structure on the stack and store it's
    // address in the EXCEPTION_REGISTRATION structure
    movl     EH3_CONTEXT(%esp), %eax
    pushl    %ebx						// Registration frame
    pushl    %eax						// Context
    movl     %esp, ER_EPOINTERS(%ebx)	// Pointer to EXCEPTION_REGISTRATION on the stack

    // Keep current try-level in EDI
    movl     ER_TRYLEVEL(%ebx), %edi

    // Keep a pointer to the scopetable in ESI
    movl     ER_SCOPETABLE(%ebx), %esi

.eh3_next_scope:

    // If we have reached the end of the chain then exit
    cmpl     $-1, %edi
    je       .eh3_search

    // Compute the offset of the entry in the scopetable and store
    // the absolute address in EAX
    lea     (%edi, %edi, 2), %eax
    shll    $2, %eax
    addl    %esi, %eax

    // Fetch the address of the filter routine
    movl     ST_FILTER(%eax), %eax

    // If this is a termination handler then skip it
    cmpl     $0, %eax
    je       .eh3_continue

    // Filter routines may trash all registers so save the important
    // ones before restoring the call frame ebp and calling the handler
    pushl	%ebp
    pushl	%edi				// Stop try-level
    lea		ER_EBP(%ebx), %ebp
    call	*%eax
    popl	%edi				// Stop try-level
    popl	%ebp

    // Reload EBX with registration frame address
    movl	EH3_REGFRAME(%ebp), %ebx

    // Be more flexible here by checking if the return value is less than
    // zero, equal to zero, or larger than zero instead of the defined
    // values:
    //   -1 (EXCEPTION_CONTINUE_EXECUTION)
    //    0 (EXCEPTION_CONTINUE_SEARCH)
    //   +1 (EXCEPTION_EXECUTE_HANDLER)
    orl      %eax, %eax
    jz       .eh3_continue
    js       .eh3_dismiss

    // Filter returned: EXCEPTION_EXECUTE_HANDLER

    // Ask the OS to perform global unwinding.
    pushl	%edi		// Save stop try-level
    pushl	%ebx		// Save registration frame address
    pushl	%ebx		// Registration frame address
    call	__global_unwind2
    popl	%eax		// Remove parameter to __global_unwind2
    popl	%ebx		// Restore registration frame address
    popl	%edi		// Restore stop try-level

    // Change the context structure so _except_finish is called in the
    // correct context since we return ExceptionContinueExecution.
    movl     EH3_CONTEXT(%ebp), %eax
    
    movl     %edi, CONTEXT_EDI(%eax)		// Stop try-level
    movl     %ebx, CONTEXT_EBX(%eax)		// Registration frame address
    movl     $_except_finish, CONTEXT_EIP(%eax)

    movl     $ExceptionContinueExecution, %eax
    jmp      .eh3_return

    // Filter returned: EXCEPTION_CONTINUE_SEARCH
.eh3_continue:

    // Reload ESI because the filter routine may have trashed it
    movl     ER_SCOPETABLE(%ebx), %esi

    // Go one try-level closer to the top
    lea      (%edi, %edi, 2), %edi
    shll     $2, %edi
    addl     %esi, %edi
    movl     ST_TRYLEVEL(%edi), %edi

    jmp      .eh3_next_scope

    // Filter returned: EXCEPTION_CONTINUE_EXECUTION
    // Continue execution like nothing happened
.eh3_dismiss:
    movl     $ExceptionContinueExecution, %eax
    jmp      .eh3_return

    // Tell the OS to search for another handler that will handle the exception
.eh3_search:

    movl     $ExceptionContinueSearch, %eax
    jmp      .eh3_return

    // Perform local unwinding
.eh3_unwind:

    testl    $EXCEPTION_TARGET_UNWIND, EREC_FLAGS(%eax)
    jnz      .eh3_return

	// Save some important registers
    pushl	%ebp

    lea		 ER_EBP(%ebx), %ebp
    pushl    $-1
    pushl    %ebx
    call     __local_unwind2
    addl     $8, %esp

	// Restore some important registers
    popl     %ebp

    movl     $ExceptionContinueSearch, %eax

    // Get me out of here
.eh3_return:

	movl	%ebp, %esp
    popl	%ebp
    ret

// Parameters:
//   None
// Registers:
//   EBX - Pointer to exception registration structure
//   EDI - Stop try-level
// Returns:
//   -
// Notes:
//   -
_except_finish:

    // Setup EBP for the exception handler. By doing this the exception
    // handler can access local variables as normal
    lea		ER_EBP(%ebx), %ebp

	// Save some important registers
    pushl	%ebp
    pushl	%ebx
    pushl	%edi

    // Stop try-level
    pushl	%edi

    // Pointer to exception registration structure
    pushl    %ebx
    call     __local_unwind2
    addl     $8, %esp

	// Restore some important registers
    popl     %edi
    popl     %ebx
    popl     %ebp

    // Keep a pointer to the scopetable in ESI
    movl     ER_SCOPETABLE(%ebx), %esi

    // Compute the offset of the entry in the scopetable and store
    // the absolute address in EDI
    lea     (%edi, %edi, 2), %edi
    shll    $2, %edi
    addl    %esi, %edi

    // Set the current try-level to the previous try-level and call
    // the exception handler
    movl     ST_TRYLEVEL(%edi), %eax
    movl     %eax, ER_TRYLEVEL(%ebx)
    movl     ST_HANDLER(%edi), %eax

    call    *%eax

    // We should never get here
    ret

// Copied from Wine.
__EH_prolog:
    pushl    $-1
    pushl    %eax
    pushl    %fs:0
    movl     %esp, %fs:0
    movl     12(%esp), %eax
    movl     %ebp, 12(%esp)
    leal     12(%esp), %ebp
    pushl    %eax
    ret

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩午夜在线影院| 亚洲18色成人| 91精品国产色综合久久久蜜香臀| 一本色道久久综合狠狠躁的推荐| 99久久国产综合色|国产精品| 成人午夜av电影| 国产suv精品一区二区三区| 国产一区免费电影| 国产丶欧美丶日本不卡视频| 国产成人午夜精品5599| www.一区二区| 91美女片黄在线观看| 色综合欧美在线视频区| 欧美在线播放高清精品| 在线综合+亚洲+欧美中文字幕| 91精品国产一区二区三区蜜臀| 日韩精品一区二区三区老鸭窝| 久久综合一区二区| 亚洲欧洲日产国产综合网| 亚洲女爱视频在线| 五月开心婷婷久久| 精品一区二区三区日韩| 成人毛片视频在线观看| 欧美系列日韩一区| 欧美一区二区播放| 国产欧美一区二区精品性色| 亚洲女人的天堂| 日本aⅴ免费视频一区二区三区| 精品一区二区三区在线观看| 成人18视频在线播放| 在线视频你懂得一区| 日韩欧美卡一卡二| 欧美韩国日本不卡| 亚洲午夜在线电影| 激情深爱一区二区| 91免费精品国自产拍在线不卡| 欧美日韩国产经典色站一区二区三区 | 中文字幕在线不卡视频| 亚洲最大成人综合| 美国毛片一区二区| 成人丝袜18视频在线观看| 欧美亚日韩国产aⅴ精品中极品| 欧美一区二区三区不卡| 国产精品成人免费精品自在线观看| 亚洲一卡二卡三卡四卡五卡| 国产一区二区不卡在线| 色噜噜狠狠一区二区三区果冻| 国产精品丝袜一区| 艳妇臀荡乳欲伦亚洲一区| 九色|91porny| 在线观看日韩av先锋影音电影院| 精品成人免费观看| 亚洲精品ww久久久久久p站| 麻豆精品一区二区综合av| av午夜一区麻豆| 日韩欧美中文字幕公布| 亚洲激情五月婷婷| 国产精品一二三四| 欧美日韩精品一区二区在线播放 | 午夜精品久久久久久不卡8050| 国产精品资源在线观看| 欧美日韩国产三级| 国产精品伦理在线| 激情综合网激情| 欧美伦理电影网| 亚洲欧美视频在线观看| 国产自产高清不卡| 欧美另类z0zxhd电影| 国产精品亲子乱子伦xxxx裸| 久久国内精品自在自线400部| 色8久久精品久久久久久蜜| 国产日本亚洲高清| 久草中文综合在线| 欧美丰满嫩嫩电影| 亚洲国产综合人成综合网站| av激情综合网| 日本一二三四高清不卡| 激情综合色综合久久综合| 91精品国产综合久久香蕉的特点 | 中文字幕制服丝袜成人av| 久久精品国产秦先生| 制服丝袜中文字幕一区| 亚洲国产裸拍裸体视频在线观看乱了| 9i在线看片成人免费| 久久久久高清精品| 精彩视频一区二区三区| 午夜精品一区二区三区电影天堂| 不卡一区二区在线| 欧美激情一区二区三区四区 | 色婷婷av一区二区三区gif| 欧美国产精品一区二区三区| 国产一区二区三区黄视频| 欧美www视频| 精品一区二区三区免费播放| 日韩午夜激情av| 美女国产一区二区三区| 3atv一区二区三区| 男人的天堂久久精品| 69堂国产成人免费视频| 天天做天天摸天天爽国产一区| 欧美在线999| 天天综合天天做天天综合| 欧美人xxxx| 另类综合日韩欧美亚洲| 精品国产免费久久 | 欧美精品在欧美一区二区少妇| 亚洲一区免费在线观看| 欧美日本韩国一区| 日韩av电影天堂| 日韩欧美一区中文| 久国产精品韩国三级视频| 久久久99精品久久| 成人一级视频在线观看| 亚洲色图.com| 欧美午夜精品一区二区蜜桃| 天天综合网 天天综合色| 日韩欧美色综合网站| 国产黄人亚洲片| 国产精品家庭影院| 在线免费观看成人短视频| 亚洲不卡av一区二区三区| 日韩欧美亚洲国产精品字幕久久久| 激情另类小说区图片区视频区| 久久久精品免费免费| 99精品欧美一区二区三区小说| 一区二区免费视频| 欧美一级理论片| 成人综合在线观看| 亚洲激情一二三区| 日韩视频在线一区二区| 国产98色在线|日韩| 亚洲精品视频在线观看网站| 这里只有精品电影| 国产精华液一区二区三区| 亚洲激情av在线| 日韩亚洲电影在线| av一二三不卡影片| 亚洲成人福利片| 国产午夜精品一区二区三区嫩草| 91在线视频网址| 日韩在线卡一卡二| 久久精品一区二区三区不卡牛牛| 91一区在线观看| 日韩av网站在线观看| 中文字幕精品综合| 欧美吞精做爰啪啪高潮| 国产精品资源网站| 亚洲主播在线播放| 国产午夜精品美女毛片视频| 欧美性大战久久久久久久| 韩国女主播成人在线| 亚洲另类春色国产| 久久婷婷一区二区三区| 日本久久一区二区三区| 精品一区二区三区影院在线午夜| 亚洲天堂免费在线观看视频| 日韩写真欧美这视频| 91丨九色丨黑人外教| 国产专区欧美精品| 亚洲一区二区三区免费视频| 久久久精品综合| 国产精品伦理在线| 欧美一区二区三区四区高清| 丰满白嫩尤物一区二区| 日韩国产欧美在线播放| 亚洲欧美综合色| 欧美精品一区二区三区很污很色的| 91麻豆6部合集magnet| 国产一区二区三区日韩| 日韩精品午夜视频| 一区二区视频在线| 国产视频不卡一区| 日韩一区二区三区观看| 欧美主播一区二区三区| 成人网在线播放| 国产在线精品不卡| 午夜精品久久久久久久99樱桃| 亚洲日本免费电影| 欧美国产日韩a欧美在线观看| 日韩精品一区二区三区老鸭窝| 一本一道综合狠狠老| 国产成人亚洲综合色影视| 久久国产精品第一页| 日韩av电影免费观看高清完整版| 亚洲欧美激情视频在线观看一区二区三区| 久久久久久久久久久电影| 这里是久久伊人| 欧美日本一区二区| 91高清视频在线| 日本高清不卡一区| 91在线观看免费视频| av电影在线观看不卡| 粉嫩蜜臀av国产精品网站| 国产精品一级黄| 国产精品一区二区三区四区| 国产一区欧美二区| 国产一区二区三区观看| 国产一区二区中文字幕| 蜜桃视频一区二区三区| 人人狠狠综合久久亚洲|