用于Delphi的x86代码生成器框架

Dav*_*lor 4 delphi x86 assembly code-generation intel

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

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

更新:

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

谢谢,大卫

Rob*_*ove 5

我对你的问题的思考越多.我不确定你是否只想做动态方法调用.即使您询问有关生成x86代码的问题.有几种技术可以做到这一点.

如果您知道相关方法的签名,则可以使用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;
Run Code Online (Sandbox Code Playgroud)

如果您不知道方法签名,可以使用{$ METHODINFO ON}编写类然后使用ObjAuto.pas中的功能来调用该方法.

我在DelphiLive的RTTI Presentation代码中有一个例子,说明如何做到这一点.