mov eax,CR0
and eax,not 0x10000 //eax的第29位清零,该位是无意义的,正常就应该为零
mov CR0,eax
该代码目的是什么?
★代码有如下宏定义,宏定义中的“##”符号是什么意思
#define MemCheckAndHandle(nr,type,varsize,value) if ( /*it's faster to do this in a seperate code segment for each type, but lets try this first (less code)*/ \
((CurrentScan.Scantype==ST_Exact_value) && (*(##type)mempointer==value)) ||\
((CurrentScan.Scantype==ST_SmallerThan) && (*(##type)mempointer<value)) ||\
((CurrentScan.Scantype==ST_BiggerThan) && (*(##type)mempointer>value))\
)\
{\
/*found one*/ \
DbgPrint("Found one!!!\n");\
AddressList[found]=(ULONG)mempointer;\
ValueList##nr[found]=*(##type)mempointer;\
found++;\
if (found==AddressListSize)\
{\
DbgPrint("Writing tempfile\n");\
\
/*write the addresses and values to disk*/ \
CETC_Write(addressfile,AddressList,found*4,&iosb);\
CETC_Write(valuefile,ValueList##nr,found*varsize,&iosb);\
\
foundsaved+=found;\
found=0;\
}\
}
WP Write Protect (bit 16 of CR0) — Inhibits supervisor-level procedures from writing into user-level read-only pages when set; allows supervisor-level procedures to write into user-level read-only pages when clear (regardless of the U/S bit setting; see Section 3.7.6). This flag facilitates implementation of the copy-on-write method of creating a new process (forking) used by oper- ating systems such as UNIX.