35 lines
1.5 KiB
NASM
35 lines
1.5 KiB
NASM
.386P
|
|
.MODEL FLAT
|
|
.DATA
|
|
.CODE
|
|
_getFS proc near ; PureExceptionRegistration *getFS(void)
|
|
push ebp ; save prior stack frame
|
|
mov ebp,esp ; create new frame
|
|
push esi ; save source index register
|
|
push es ; save extra segment register
|
|
push fs ; save fs register
|
|
pop es ; restor fs into es (Microsoft assembler quirk)
|
|
mov eax,es:[0] ; move value of fs:[0] into eax
|
|
pop es ; restore extra segment register
|
|
pop esi ; restore source index register
|
|
pop ebp ; restore stack frame
|
|
retn ; return near to caller
|
|
_getFS endp
|
|
_setFS proc near ; void setFS(PureExceptionRegistration *pPureExceptionRegistration)
|
|
push ebp ; save prior stack frame
|
|
mov ebp,esp ; create new frame
|
|
push esi ; save source index register
|
|
push es ; save extra segment register
|
|
push fs ; save fs register
|
|
pop es ; restor fs into es (Microsoft assembler quirk)
|
|
mov esi,[ebp+08h] ; get pointer to PureExceptionRegistration
|
|
mov es:[0],esi ; move it into FS register
|
|
pop es ; restore extra segment register
|
|
pop esi ; restore source index register
|
|
pop ebp ; restore stack frame
|
|
retn ; return near to caller
|
|
_setFS endp
|
|
public _getFS
|
|
public _setFS
|
|
END
|