游戏开发论坛

 找回密码
 立即注册
搜索
楼主: dreamerate

[原创DLL]前几天我用MASM编写的Utils.dll拿出来给大家用用

 关闭 [复制链接]

7

主题

229

帖子

247

积分

中级会员

Rank: 3Rank: 3

积分
247
QQ
 楼主| 发表于 2006-1-10 05:50:00 | 显示全部楼层

Re:[原创DLL]前几天我用MASM编写的Utils.dll拿出来给大家用用

MStrLen
MStrLen2

两个函数效率相比较,应该是2比较不错!建议大家用2

7

主题

229

帖子

247

积分

中级会员

Rank: 3Rank: 3

积分
247
QQ
 楼主| 发表于 2006-1-10 05:54:00 | 显示全部楼层

Re:[原创DLL]前几天我用MASM编写的Utils.dll拿出来给大家用用

此DLL不仅是VB的最佳选择,也是偶们用MASM的最佳选择!*^_^*

4

主题

102

帖子

102

积分

注册会员

Rank: 2

积分
102
发表于 2006-1-10 18:12:00 | 显示全部楼层

Re:[原创DLL]前几天我用MASM编写的Utils.dll拿出来给大家用用

不错,我以为masm只是编目标文件的

0

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2006-1-11 15:24:00 | 显示全部楼层

Re:[原创DLL]前几天我用MASM编写的Utils.dll拿出来给大家用用

没劲~~就不过DLL封装一些函数而已~MASM32编译的
这种编译器~习惯用VC的人基本上都会~~~
字符串处理还是Delphi好一点~String类型和可变类型足够你用的
VB连类型检查都没有。。运算速度低下,甚至连内项汇编都不可以~
这个编译器不适合开发游戏。。推荐VC~~

7

主题

229

帖子

247

积分

中级会员

Rank: 3Rank: 3

积分
247
QQ
 楼主| 发表于 2006-1-11 16:12:00 | 显示全部楼层

Re:[原创DLL]前几天我用MASM编写的Utils.dll拿出来给大家用用

又是一个吃饱了撑着的家伙。你看清楚我发的内容了吗?

1、字串处理+进制转换+堆内存处理+CRC32+BITMAP。DLL是WINDOWS操作系统的基础,没有DLL,就没有WINDOWS。你不会难道连KERNEL32.DLL/USER32.DLL/GDI32.DLL....都不知道吧?  可笑.  VC绝大多数都是调用WIN32API,会用VC的都会用内联汇编吗?我没说我的贴子有多少技术含量,起码你用BORLAND的RTL内的几个字串处理函数的算法和我的是一样的。习惯用VC的都会MASM32?那这样大家都学VC不就行了吗?完全不是一个层次的,真是搞笑。VC包含C/C++,是的,的确他们都可使用内联汇编,你高兴就用VC不要用MASM32吧,世界上很多高手们都是用FASM或TASM的,你为什么不用呢?

2、DELPHI的string说白了就是编译器帮你做了很多事情,ctow/wtoc等等;

3、VB的连类型检查都没有?你会用VB吗?搞笑。你这样说只让别人笑你无知。VB是基于高级语言的编程工具,微软推出他就是想让大家能轻松地编写WIN32程序,至于为什么不加内联汇编那是因为没这个必要。微软有很多产品,他推出的每一个产品都是有针对性的。如果你想内联汇编,就请用VC吧。

14

主题

163

帖子

178

积分

注册会员

Rank: 2

积分
178
QQ
发表于 2006-1-11 20:28:00 | 显示全部楼层

Re:[原创DLL]前几天我用MASM编写的Utils.dll拿出来给大家用用

效率我就不想再提了,除了机器语言外,没有任何语言快过于汇编语言的,而且我的算法都是比较优的。
(这句话明显有弱点:汇编语言==机器语言,每一个汇编语句和机器语言都是相对应的,比如0x90=汇编的nop)
不要删贴,这个是其实.
DLL是WINDOWS操作系统的基础,没有DLL,就没有WINDOWS。
注意,这个是Ring3的东西,多看点基础书吧.
我目前用NASM开发操作系统,至于你的其他的话基本上还算正确.

7

主题

229

帖子

247

积分

中级会员

Rank: 3Rank: 3

积分
247
QQ
 楼主| 发表于 2006-1-11 22:09:00 | 显示全部楼层

Re:[原创DLL]前几天我用MASM编写的Utils.dll拿出来给大家用用

楼上的,在汇编语言上,偶知识浅薄,如有不足之处,望多指教。:)

你的说法我不敢拘同

(这句话明显有弱点:汇编语言==机器语言,每一个汇编语句和机器语言都是相对应的,比如0x90=汇编的nop)

宏汇编难道也有一一对应的机器代码吗?
invoke ==?
rep=?
...

invoke是MASM独有伪指令,展开就是push n...call func_address
rep是重复指令,展开就是n dup(instruction)
你能找到相应的机器指令吗?
...

user32.dll, kernel32.dll, gdi32.dll
没有这三大模块,就没有WINDOWS的存在。谁敢说他们不是WINDOWS的大脑呢?虽然是应用层的,但是,如果没有他们的存在,我不知道如何跟WINDOWS打交道。

大多数windows的和应用程序的接口都是基于DLL的。

从实模式转到保护保模式,还有pe loader这些能算吗?

内存管理函数都是存放在KERNEL32.DLL里。虽然windows还有一些sys及vxd(WIN98之前)及com(DEBUG)、WDM,但是主要的还是那三大模块。我没有看过WINDOWS2000代码,如果有错误的地方,请指明。

要真正的说WINDOWS的组件,多如牛毛,比如说system32下就有很多EXE的存在……

谢谢!:)

248

主题

2674

帖子

2702

积分

金牌会员

Rank: 6Rank: 6

积分
2702
QQ
发表于 2006-1-12 02:19:00 | 显示全部楼层

Re:[原创DLL]前几天我用MASM编写的Utils.dll拿出来给大家用用



其实没有必要为了一点芝麻绿豆的小细节,就带情绪说话。

我还是希望看到汇编版的诞生的,因为只有他,才能带领论坛走向专业之路。
而且,如果能看到各位讨论汇编,我从中能偷到一点师,也值回票价了。

近来深深的体会到,不管什么样的专业人,都有一个共同的特质,就是做事很认真,很细致,很舍得投入时间进去,也确实发现,很多人用的不是很高明的方法,只是因为执著,就产生了非常大的不同,这让我很震惊!也许专业和不专业的分别,就在于是否能够潜心处理问题,而汇编就是这种,天生不具备华丽外表,需要潜心修炼的才能看见成效的例子。


13

主题

594

帖子

595

积分

高级会员

Rank: 4

积分
595
发表于 2006-1-12 05:58:00 | 显示全部楼层

Re:[原创DLL]前几天我用MASM编写的Utils.dll拿出来给大家用用

字符串传递给API时最好不要用byval,有隐含的转换操作,效率肯定低的

高效的方法应该是用StrPtr直接传送字符串的地址给API

13

主题

594

帖子

595

积分

高级会员

Rank: 4

积分
595
发表于 2006-1-12 06:27:00 | 显示全部楼层

Re: Re:[原创DLL]前几天我用MASM编写的Utils.dll拿出来给大家

dreamerate: Re:[原创DLL]前几天我用MASM编写的Utils.dll拿出来给大家用用

dim pszString as string
pszString = string(256, chr(0)) ' 为pszString指针分配256个字节
call HexToString(byval pszString, byval "6D7367626F78206E646563")
msgbox pszString  '哈哈,结果为“msgbox ndec”


这里的pszString不是256个字节,而是256个字符,实际大小是512字节,因为VB使用的是UNICODE字符串
用byval传递给DLL时,实际上是转换了一个ANSI字符串副本传递给DLL

高效的方法是用StrPtr取得字符串的地址,传递给DLL,再在DLL中处理这个UNICODE字符串

VB中使用WindowsAPI的字符串API函数时,***W的函数快于***A的函数也是这个道理,前者省去了UNICODE到ANSI的转换
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-24 12:53

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表