有人遇到过 Delphi 的框架或库来简化 x86 代码的生成吗?我不是在寻找汇编器,而是在寻找一个将低级位和字节之上的代码生成过程抽象化的框架。理想情况下,我想在现有的库或框架之上构建,而不是根据具体情况对逻辑进行硬编码。

最初的用途是在运行时生成小型代码存根,类似于 Delphi 调度 SOAP 请求的方式。如果我找不到东西,我可能会自己动手,但我不想重新发明轮子。如果许可证允许在商业和开源项目中进行翻译和使用,“C”中的某些内容可能会让我感兴趣。

更新:

以下是更多背景信息:我正在努力将接口和/或类的运行时实现作为持久性框架的一部分。有点像 Java 注释驱动的持久性 (JPA/EJB3),只不过具有明显的 Delphi 风格。调用目标是一个模块化/可扩展的框架,它将实现通用的持久性模型。我需要以非常动态和流畅的方式基于 RTTI 和注释/属性模型(类似于 InstantObjects 元数据)来调度和挂钩方法调用。

谢谢大卫

有帮助吗?

解决方案

据的特点 PaxCompiler ,您可以创建独立的可执行文件。

其他提示

我越有想过你的问题。我不知道,如果你想只是做动态方法调用。即使你的询问生成x86代码。 有几个techiniques是做到这一点。

如果您知道有问题的方法的签名,你可以用它来轻松做 TMethod和设置方法的地址和数据。

procedure TForm8.Button1Click(Sender: TObject);
begin
  Showmessage('Hello1');
end;

procedure TForm8.Button2Click(Sender: TObject);
var
 M : TMethod;
begin
  M.Code := MethodAddress('Button1Click');
  M.Data := Self;
  TNotifyEvent(M)(self);
end;

如果你不知道方法签名,你可以写与类{$ MethodInfo的ON} 然后用功能在ObjAuto.pas要调用的方法。

我有一个例如在我的 RTTI演示代码从DelphiLive关于如何做到这一点。

非常spectulative答案: 像 LLVM ?我不知道,如果它可以从Delphi或不能使用,但你应该能够创建DLL的问心无愧吧。

逻辑上,你会简单地生成Delphi代码,编译到DLL / BPL通过CMDLINE编译器,然后达因加载那一个?

不幸的是德尔福Explorer不附带CMDLINE编译器虽然。而主要的二进制也必须是在Delphi资源管理器(或至少在D2006如果是二进制兼容不够)

Delphi的版本(或自由帕斯卡)的任意组合可能不会在包装上或HLL级工作,只在基本程序DLL水平。

我刚刚发现了一个有趣的框架,它可以完成我最初发布问题时所寻找的大部分功能。对于我的目的来说有点晚了,但我认为其他人可能会发现这很有用:

DAsmJit 德尔福端口 asmjit项目

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top