【问题标题】:Perl - Opcode to source code?Perl - 源代码的操作码?
【发布时间】:2014-12-23 22:51:12
【问题描述】:

如果我有操作码,有没有办法创建 perl 源代码?

例如

perl -MO=Concise -e "print 123"

将输出操作码:

6  <@> leave[1 ref] vKP/REFC ->(end)
1     <0> enter ->2
2     <;> nextstate(main 1 -e:1) v:{ ->3
5     <@> print vK ->6
3        <0> pushmark s ->4
4        <$> const[IV 123] s ->5

我想以某种方式扭转这种情况。

【问题讨论】:

  • B::Concise 是(主要是?)一个调试工具,这让我怀疑它的输出不是供计算机使用的。我将此作为评论发布,因为我认为它的权威性不足以作为答案。

标签: perl opcode reversing


【解决方案1】:

如果“有操作码”,你的意思是“有操作码树”

虽然 B::Concise 试图给出操作码树的准确表示,但 B::Deparse 获取操作码树并从中生成源代码。

$ perl -MO=Deparse -e'$x && print'
print $_ if $x;
-e syntax OK

很好,虽然有一些限制。

如果“有操作码”,你的意思是“有 B::Concise 的输出”

鉴于 B::Concise 试图非常完整,这可能是可能的,但我认为缺少一些信息。我很确定没有任何尝试在 CPAN 上执行此操作,因为我从未听说过会破坏它(您希望经常发生的事情)。

【讨论】:

    猜你喜欢
    • 2022-11-24
    • 1970-01-01
    • 1970-01-01
    • 2013-02-11
    • 1970-01-01
    • 2013-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多