【问题标题】:Writing Assembly on Perl在 Perl 上编写汇编
【发布时间】:2019-01-17 09:56:51
【问题描述】:

我想写一个小汇编代码并从 Perl 中调用它:

我查看 cpan 并找到那 2 个 Perl 模块

  1. https://metacpan.org/pod/Inline::ASM 很老了
  2. https://metacpan.org/pod/FFI::Platypus::Lang::ASM 提到可以从 perl 调用程序集,我查看了示例但没有找到任何与程序集代码相关的示例。

任何想法如何将 FFI::Platypus::Lang::ASM 与 Perl 一起使用,将不胜感激

【问题讨论】:

  • 至于 Inline::ASM 的时代......为什么这很重要?
  • 如果您编译为共享对象并使用NativeCall 接口,从 Perl6 调用程序集也非常简单,请参阅 FOSDEM 2016 上的this talk
  • 还有一个问题是为什么你认为你需要用 asm 编写代码。如今,人类很难编写高效的 asm 代码(由于 CPU 乱序执行的复杂性不断增加)。用一个像样的优化编译器用 C 语言编写它可能是一个更好的解决方案。它可能更便携,也更易于维护。
  • @ikegami 没关系,我的意思是它似乎没有维护18年,无论如何我都会尝试一下
  • @DavidWohlferd 有时会出现极端情况,你想检查一些,例如我想在 perl 上编写一个返回 CPUID Manifcator Id 的子程序,你知道是否有关于这样的功能,或者如何使用一些 perl 模块来实现?

标签: perl ffi


【解决方案1】:

任何想法如何将 FFI::Platypus::Lang::ASM 与 Perl 一起使用,将不胜感激

该模块的作者没有为该代码本身提供任何示例。看起来这可能是一个未完成的项目。

无论如何,这是一件很奇怪的事情。 Perl 在汇编之外运行了几个抽象层次——它们之间的互操作充其量是尴尬的。

更实用的解决方案是编写 C 代码,调用您的汇编代码(或将其嵌入为内联汇编),然后使用 XS 将该代码改编为 Perl。

【讨论】:

    猜你喜欢
    • 2011-06-29
    • 2011-03-26
    • 2016-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-07
    相关资源
    最近更新 更多