VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)

VB爱好者乐园(VBGood)

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

Vb内嵌汇编+标准Dll插件 开源

  [复制链接]
 楼主| 发表于 2012-5-2 09:18:07 | 显示全部楼层
本帖最后由 19900603 于 2012-5-2 19:19 编辑

链接Lib我到有个办法!直接用汇编代码调用!  随便写给Vb内部函数编译后打开工程目录下的Asmmodule.lst文件夹!里面有调用Vb的内部函数原码!把函数地址替换成Lib的函数地址不知道行的通不? 编译时应该能链接进去吧!没测试!纯属猜测!
如果谁有能力 写个 Vb内所有函数的库的话 嘿嘿。。。咱把Vb内所有内部函数 替换了

点评

嘿嘿 那就写吧。。写出来咱们试着替换进去  发表于 2012-5-3 11:57
写个 Vb内所有函数的库?!!?我只写了一小部分,而且msvbvm60里面有大量未归档函数……  发表于 2012-5-3 11:56
要不要试试内嵌DLL的伪静态链接,噗...  发表于 2012-5-3 11:00
加的那些符号貌似可以用API UnDecorateSymbolName来还原  发表于 2012-5-2 18:40
恩!!记得貌似是函数名吧!!不过加了很多符号!  发表于 2012-5-2 13:11
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-5-2 22:04:53 | 显示全部楼层
本帖最后由 19900603 于 2012-5-2 22:05 编辑

这个东西不错就是有点大。。。。。。

下面开始做 C代码嵌入吧
两个版本的编译器
Borland C/C++ Compiler


保存以下代码 到 C.Cpp

  1. extern "C" long __stdcall GetSum();

  2. long __stdcall GetSum()
  3. {
  4. long i,l=0;
  5. for(i=1;i<=100;i++)
  6.   l=l+i;
  7. return l;
  8. }
复制代码
保存以下代码到批处理文档(把Cpp代码编译成Asm代码)

  1. BCC32 -5 -S -Ox 13.cpp
  2. cmd
复制代码
把三个文件放到同一目录 打开批处理文档 你会发现 多了一个 C.Asm
这样你就可以提取出里面函数的汇编代码来进行嵌入到Vb里了。。 当然。。直接修改插件最好的


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

发表于 2012-5-3 00:28:21 | 显示全部楼层
19900603 发表于 2012-5-2 22:04
这个东西不错就是有点大。。。。。。

下面开始做 C代码嵌入吧

期待VB支持嵌入各种语言....另外我希望能实现这样:
汇编_开始
mov eax,00000000H
ret
汇编_结束

(也就是说每句汇编代码前面不用加'#ASM)
回复 支持 反对

使用道具 举报

发表于 2012-5-3 00:28:35 | 显示全部楼层
19900603 发表于 2012-5-2 22:04
这个东西不错就是有点大。。。。。。

下面开始做 C代码嵌入吧

期待VB支持嵌入各种语言....另外我希望能实现这样:
汇编_开始
mov eax,00000000H
ret
汇编_结束

(也就是说每句汇编代码前面不用加'#ASM)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-5-3 00:43:25 | 显示全部楼层
本帖最后由 19900603 于 2012-5-3 15:08 编辑

忙了一晚上 修复了两处Bug  加入了 内嵌C代码  各位给点鼓励啊。。。。。
1《修改Asm标签后编译无效》
2《 ASM中的注释使用中文字体 选中时移位》

嘿嘿  加上了 内嵌C代码了。。因为用上 bcc编译器 插件也相应的变大了。。

两个位移操作函数。。Vb能位移了

'移位操作
Public Function shr(Num As Byte) As Byte
    '#ASM mov eax, DWORD PTR _Num$[esp-4]
    '#ASM mov al, BYTE PTR [eax]
    '#ASM shr eax, 1
    shr = Num
End Function
                                                                    
'移位操作
Public Function shl(Num As Byte) As Byte
    '#ASM mov eax, DWORD PTR _Num$[esp-4]
    '#ASM mov al, BYTE PTR [eax]
    '#ASM shl eax, 1
    shl = Num
End Function





大家先用着 我继续更新

源码加例子







PS 很郁闷的是 为什么 内嵌汇编还不如内嵌C快呢???而且C编译的代码异常稳定
/
/
/

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

点评

很郁闷带参数的函数替换调用,C命名规则是加下划线,C++是用下划线加@参数*4,VB是?函数名@模块名@@AAGXXZ  发表于 2012-7-20 19:52
说不定把循环展开了...话说在编译参数里关了优化不就好了么...  发表于 2012-5-3 13:59
我不明白为啥按照我说的做就会无法加入注释,无法加"'"(VB注释)的话用";"(汇编注释)不就行了吗?  发表于 2012-5-3 12:22
。。。acme_pjz 你说的也太变态了吧。。那样返回所用时间的话也就几十毫秒了  发表于 2012-5-3 12:00
C代码估计直接优化成return 5050了  发表于 2012-5-3 11:58
回复 支持 反对

使用道具 举报

发表于 2012-5-3 03:50:20 | 显示全部楼层
这个我喜欢哈哈~~
回复 支持 反对

使用道具 举报

发表于 2012-5-3 09:49:27 | 显示全部楼层
呵呵,内嵌汇编和标准DLL我现在已经完全交给powerbasic了。

点评

呵呵,那我交给C/C++了  发表于 2012-5-3 11:55
回复 支持 反对

使用道具 举报

发表于 2012-5-3 10:44:53 | 显示全部楼层
额,想问一下,’#ASM……这样,是不是把汇编给标注了?怎么vb怎么识别啊?
回复 支持 反对

使用道具 举报

发表于 2012-5-3 11:03:38 | 显示全部楼层
开源,支持
回复 支持 反对

使用道具 举报

发表于 2012-5-3 12:04:24 | 显示全部楼层
哈哈。强大。。。
特地前来支持一下。。。我发觉我现在看不懂VB了。。悲剧。;P
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

文字版|手机版|小黑屋|VBGood  

GMT+8, 2022-5-29 04:49

VB爱好者乐园(VBGood)
快速回复 返回顶部 返回列表