请问各位老师一个问题,关于Delphi和汇编的

C++死个妈妈 2019-05-16 05:00:52
我们知道的汇编可以转换成机器码来置入代码中。比如:
asm
db $50, $8D, $80, $11, $44, $33, $00, $8D, $80, $11, $44, $33, $00, $58
end;

这就是把一段机器码置入到了代码中。可是目前遇到一个问题就是:
我需要置入一段汇编代码,如果转换成置入代码的话,可能有上万个字节,C++里面可以通过类来引用,请问Delphi遇到这种情况,该怎么弄呢?
感谢!
...全文
399 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
xrbaa 2020-05-27
  • 打赏
  • 举报
回复
上万字节,还是单独封装好用些。
非常集成到一起编译一话,10楼的方法不错,Include.
orxor 2020-05-27
  • 打赏
  • 举报
回复
楼上几个方法都可以。还有把汇编编译成中间obj文件,然后在DELPHI里连接
SupermanTm 2020-05-02
  • 打赏
  • 举报
回复
为什么不直接定义一个 INC 文件,把代码组织成一个字节数组常数,用指针来调用里头的入口: const MyASMData: array [0..$3ffffff] of BYTE = ($XX, $XX ....); 单元程序(xxx.pas) implementation {$INCLUDE MYASM.INC} var AsmEntry00: Pointer = @MyASMData; ...
  • 打赏
  • 举报
回复
修改一下文件格式,也可以当作类引用。 用masm32等编译成dll,然后正常调用。 或者 去他妈的 996.icu
武稀松 2019-07-23
  • 打赏
  • 举报
回复
这种事情好说啊,干过类似的事情。
直接写个binToPas的工具即可。
把任何代码或者二进制东西转成asm 的DB指令。
当然如果好几MB的数据也是可以编译的,但最好不要打开编辑,会非常卡顿。
ahjoe 2019-07-22
  • 打赏
  • 举报
回复
我大概明白了,他的意思是字节太多一个个输入效率太差了. 用工具转换一就OK了, 把文件转成delphi的字节数组源代码
  • 打赏
  • 举报
回复
直接放在资源里,运行时复制到运行地址即可。不过我很好奇的是“C++里面可以通过类来引用”是什么鬼?来个栗子~~~
liups 2019-07-22
  • 打赏
  • 举报
回复
不太了解这部分。但是楼主的例子只是放数据,这个可不是一定要用汇编的喔,随便什么方式应该都是一样的效果。重点是如何获取数据的起始地址
ahjoe 2019-07-22
  • 打赏
  • 举报
回复
直接写汇编指令,如
asm
mov esi, eax
mov edi, edx
...

end
C++死个妈妈 2019-05-16
  • 打赏
  • 举报
回复
老师们在吗????
C++死个妈妈 2019-05-16
  • 打赏
  • 举报
回复
主要就是汇编代码置入这一块实在不知道该怎么办了,难道封装动态库吗?
C++死个妈妈 2019-05-16
  • 打赏
  • 举报
回复
直接写进去的话恐怕IDE都会卡死,对delphi又不是太精通,只能来询问各位老师了

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧