Dav*_*lor 4 delphi x86 assembly code-generation intel
有没有人遇到过Delphi的框架或库来简化x86代码的生成?我不是在寻找汇编程序,而是在低级别位和字节之上抽象代码生成过程的框架.理想情况下,我希望构建在现有库或框架之上,而不是根据具体情况对逻辑进行硬编码.
最初的用法是在运行时生成小代码存根,类似于Delphi调度SOAP请求的方式.如果我找不到东西,我可能会自己动手,但我不想重新发明轮子.如果许可证允许在商业和开源项目中进行翻译和使用,那么"C"中的某些内容可能会引起我的兴趣.
更新:
这里有一些更多的上下文:我正在努力的是作为持久性框架的一部分的接口和/或类的运行时实现.类似于Java注释驱动的持久性(JPA/EJB3),除了具有明显的Delphi风格.调用目标是一个模块化/可扩展的框架,它将实现一个通用的持久性模型.我需要以非常动态和流畅的方式调度和挂钩基于RTTI的方法调用和注释/属性模型(类似于InstantObjects元数据).
谢谢,大卫
我对你的问题的思考越多.我不确定你是否只想做动态方法调用.即使您询问有关生成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代码中有一个例子,说明如何做到这一点.