|
VB6的代码效率不高,想在VB6里用汇编做终极提速吗?
下载这个插件,立即满足您的愿望!
系统需求:
1. 系统上必须安装有VB6(目前尚不支持.NET)
2. 系统上必须安装MASM32 V9.0(请去http://www.masm32.com/masmdl.htm下载安装)
下面是INLINE ASM VB插件的下载地址:
点击此处下载 ourdev_251642.rar(文件大小:195K) (原文件名:inline vb.rar)
安装方法:
先解压缩,然后进入inline vb addin目录,用VB6打开VbInLineASM.vbp,如果有错误则可以忽略。在文件菜单里编译VbInLineASM.dll,这个文件的输出地址应该选在windows\system32里。
重新启动VB6,工具栏上会有一个小ASM的图标(没有的话打开插件菜单下的插件管理器人工添加),点击这个图标,在出现的窗口里点Change Settings,在最下方倒数第二行是MASM编译器的地址(默认是空的),点旁边的“...”按钮,找到MASM的编译器ml.exe确定即可(一般地址是c:\masm32\bin\ml.exe),完成后点上方的Exit Settings就可保存退出了。
以后在VB6里使用内联汇编用
'#ASM_START
'
' mov eax, 12345678 ;Put a number in EAX
'
' ret ; Return with result in EAX
'#ASM_END
这样的格式。
注意为了避免VB出错ASM代码是需要用'注释掉的,而且在程序全编译成EXE以后才能测试汇编语言的部分,否则汇编语言在VB环境下调试时是不起作用的。
下图为一个嵌入汇编的测试例程截屏。
运算任务是分别用内联汇编和VB方式做一千万次4*2^3运算,结果显而易见汇编比VB快了足足3.2647秒。
(原文件名:masvb1.gif)
内联汇编做4*2^3的代码:
Public Function Power2ASM(ByVal Num As Long, ByVal Power As Long) As Long
'#ASM_START
' push ebp
' mov ebp, esp
'
' mov eax, [ebp+8] ; Get first argument
' mov ecx, [ebp+12] ; Get second argument
' rcl eax, cl ;shl eax, cl ; EAX = EAX * ( 2 to the power of CL )
' mov esp, ebp ;MOV/POP is much faster
' pop ebp ;on 486 and Pentium than Leave
' ret 8
'#ASM_END
End Function |
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|