| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1684 人关注过本帖
标题:小白学WIN32之点滴.模拟简单API之功能.
只看楼主 加入收藏
win_pig
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2008-11-14
收藏
 问题点数:0 回复次数:4 
小白学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都可参照功能通过汇编指令实现.
收到的鲜花
  • cnhanxiao2008-11-29 13:57 送鲜花  30朵  
搜索更多相关主题的帖子: API 点滴 模拟 
2008-11-28 14:24
cnhanxiao
Rank: 2
等 级:新手上路
威 望:4
帖 子:124
专家分:0
注 册:2008-10-17
收藏
得分:0 
支持一下

还有绑架成版主的?拒绝做版主——对不起啊!
2008-11-29 14:03
songshilian
Rank: 2
等 级:新手上路
威 望:3
帖 子:40
专家分:0
注 册:2008-11-23
收藏
得分:0 
这个想法非常好,汇编就是速度,但大点的程序还是需要数据结构的,编程毕竟就是数学,数据结构是编程的灵魂。老大想到这个确实很有意义,对很多方面都是很有帮助的,多谢了。
2008-11-29 20:27
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
内嵌的确提高了效率 呵呵 支持一下
2008-11-29 20:57
ONEPROBLEM
Rank: 6Rank: 6
来 自:广西 南宁
等 级:贵宾
威 望:21
帖 子:1569
专家分:349
注 册:2008-7-11
收藏
得分:0 
用汇编来做东西已经够繁琐的了~~如果放着现成的API不用,岂不更加繁琐~~
2008-11-29 22:35
快速回复:小白学WIN32之点滴.模拟简单API之功能.
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.034642 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved