小白学WIN32之点滴.模拟简单API之功能.
学习WIN32之后,感到使用API之频繁,经常让人忘记了是在学习DOS汇编时的感觉.在看到罗云彬WIN32汇编的第十单元:内存管理时,突然又找到了DOS汇编的感觉,那就是用汇编语言实现API的功能,在追求速度的汇编世界里,任何一个能节省CPU时钟周期的行为都是值得偿试的.在WIN32中,我们经常在子程中使用局部变量,数据结构及数据缓冲区,因此,就会经常使用清0和填充等API,显然如RtlZeroMemory这些API要实现的功能相对简单,用基本的汇编指令即可实现.
列:内存清零 invoke RtlZeroMemory ,addr @buffer,sizeof @buffer
用宏处理即可.
Macro_RtlZeroMemory macro lpMemAddr,dwMemSize
push edi
push ecx
pushfd
xor eax,eax
mov edi,lpMemAddr
mov ecx,dwMemSize
cld
rep stosb
popfd
pop ecx
pop edi
endm
在源码中调用宏
Mcro_RtlZeroMemory addr @buffer,sizeof @buffer
即可.
同样,填充移动内存数据这些不含指定句柄线程等复杂参数的API都可参照功能通过汇编指令实现.