gpt4 book ai didi

delphi - Delphi 的 x86 代码生成器框架

转载 作者:行者123 更新时间:2023-12-03 15:21:45 24 4
gpt4 key购买 nike

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

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

更新:

这里有更多背景信息:我正在努力将接口(interface)和/或类的运行时实现作为持久性框架的一部分。有点像 Java 注释驱动的持久性 (JPA/EJB3),只不过具有明显的 Delphi 风格。调用目标是一个模块化/可扩展的框架,它将实现通用的持久性模型。我需要以非常动态和流畅的方式调度和 Hook 基于 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;

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

我的RTTI Presentation code中有一个例子来自 DelphiLive 的关于如何做到这一点的信息。

关于delphi - Delphi 的 x86 代码生成器框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/924425/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com