大佬教程收集整理的这篇文章主要介绍了perl6 – 如何反编译Perl 6?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
与反编译一起,有没有办法观察它在编译时正在做什么?我认为看到它正在尝试做什么,哪里可能比试图理解它的一些错误消息更容易.并且,反编译程序可以撤消所有的简写和聪明,以阐明实际发生的事情.
$perl6 --target=parse -e 'say "foo"' - statementlist: say "foo" - statement: 1 matches - EXPR: say "foo" - args: "foo" - arglist: "foo" - EXPR: "foo" - value: "foo" - quote: "foo" - nibble: foo - longname: say - name: say - identifier: say - morename: isa NQPArray - colonpair: isa NQPArray
–target = parse显示解析的直接结果.
$perl6 --target=ast -e 'say "foo"' - QAST::CompUnit :W<?> :UNIT<?> [pre_deserialize] - QAST::Stmt - QAST::Stmt - QAST::Op(loadbytecode) - QAST::VM [jvm] - QAST::SVal(ModuleLoader.class) [moar] - QAST::SVal(ModuleLoader.moarvm) - QAST::Op(callmethod load_module) *snip*
–target = ast显示抽象语法树.
$perl6 --target=mast -e 'say "foo"' MAST::Frame name<<unit-outer>>,cuuid<2> Local types: 0<obj>,1<obj>,2<obj>,3<obj>,Outer: <none> Instructions: [0] MAST::Op getcode MAST::Local index<3> MAST::Frame name<<unit>>,cuuid<1> [1] MAST::Op capturelex MAST::Local index<3> [2] MAST::Op getcode MAST::Local index<1> MAST::Frame name<<unit>>,cuuid<1> [3] MAST::Op takeclosure *snip*
并且–target = mast显示正在生成的实际字节代码,在本例中为MoarVM后端.
以上是大佬教程为你收集整理的perl6 – 如何反编译Perl 6?全部内容,希望文章能够帮你解决perl6 – 如何反编译Perl 6?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。