设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2264|回复: 0

[原创发布] 汇编小模块

[复制链接]

Lv4.逐梦者

梦石
0
星屑
13559
在线时间
2753 小时
注册时间
2014-10-4
帖子
756

R考场第七期纪念奖

发表于 2019-11-24 01:57:57 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

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

x
本帖最后由 SixRC 于 2020-2-5 21:54 编辑

最近发现当任务量很小时 相对调用开销有点大
这时建议直接注册ruby方法

这东西对偶尔写汇编的来讲挺好用的
用途大概是提高某些部分效率 方便随时汇编上

模块名 ExtraFunc 下面功能

ExtraFunc.parse(code)
把汇编转换为对应机器码
输入字符串 返回字符串
可用标签来跳转
这个东西 99.9999% 基于 asmjit和asmtk 躺的好舒服

ExtraFunc.run(code, *args)
code是上一步返回的机器码 或者别的方式产生的 总之类型是字符串
args是参数 类型是整数 数量不限
传入的第一个参数是 [esp + 4] 依次类推
需要自己平堆栈 传几个参 最后反正 ret n*4
只有这个是自己写的 感觉好偷懒

ExtraFunc.tbb_for(ss,ee,st,func,*args)
tbb parallel_for
ss是for的开始值 ee是结束值 st是step
func和args同run
但是不同的是 传入给func的多了一个值 就是for给的
参数顺序是 i, arg1, arg2, ...
i就是 ss, ss + st, ss + 2st, ... 到 ee(不含)
这个就是多线程方法中的一个 别的我没写 我一般就用这个

ExtraFunc.tbb_allocate(size)
ExtraFunc.tbb_deallocate(pointer)
分别是申请内存和释放内存 用于多线程提高效率 或平常用
虽然写了这个方法 其实多线程用不到的
用的时候肯定是用dll的导出方法
因为机器码里不好调用ruby方法啊..
所以这个方法就平时申请内存用好了

别的功能我没写 反正基本是基于tbb的 要什么自己加什么
工程和源码
MTASM.zip (1.35 MB, 下载次数: 91)
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-3-29 23:35

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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