Compiler construction 如何对编译器进行反向工程?
我有一个编译器,可以为一个未记录的VM编译成未记录的字节码。我希望能够编译到同一个虚拟机,但我不知道如何去做这件事。我如何学习做这件事?有人发表过他们做同样事情的日志或日志吗 编辑:我忘了提到这是乐高头脑风暴的主题。在任何人提出其他建议之前,我知道所有关于nXc和类似项目的信息,因为我正在帮助第一个FTC机器人团队,该团队只允许使用RobotC或LabView,所以我不能选择这些项目Compiler construction 如何对编译器进行反向工程?,compiler-construction,reverse-engineering,Compiler Construction,Reverse Engineering,我有一个编译器,可以为一个未记录的VM编译成未记录的字节码。我希望能够编译到同一个虚拟机,但我不知道如何去做这件事。我如何学习做这件事?有人发表过他们做同样事情的日志或日志吗 编辑:我忘了提到这是乐高头脑风暴的主题。在任何人提出其他建议之前,我知道所有关于nXc和类似项目的信息,因为我正在帮助第一个FTC机器人团队,该团队只允许使用RobotC或LabView,所以我不能选择这些项目 至于那些建议我以编译器的语言为目标的人,我还没有这样做,因为我希望编译器没有公开的硬件的某些特性会被固件公开,因
至于那些建议我以编译器的语言为目标的人,我还没有这样做,因为我希望编译器没有公开的硬件的某些特性会被固件公开,因为我想做比RobotC允许的更多的自定义内存管理。我倾向于反汇编编译器。如果它是用.NET(C#,VB.NET等)或Java编写的,则会有一些反编译器,它们将为您提供与原始源代码非常接近的内容(除非已混淆)。即使它是C++,并且只能获得程序集,库调用可能指向正确的方向。
我确实在一篇硕士论文中找到了一个有趣的链接:这里似乎有大量的资源,您可以查看:
编译器只是另一个程序,可以进行调试。这可能需要几个月的时间。让您的编译器以您已经拥有的编译器的输入语言为目标如何?我不相信您理解我的问题——这些资源都不适用,因为RobotC使用自定义固件,并且我仅限于使用RobotC(LabView在这里不是一个选项)。不幸的是,“RobotC…需要自定义固件才能运行。”顺便说一句,针对输入语言提出了很好的建议——我建议将该评论转移到您的答案中。虽然这对OP没有帮助,但在类似情况下可能会帮助其他人。是的,我们只需要使用固件(VM),而不是实际的编译器。我是PL人,所以编译器对我来说就像第二天性,只要我对字节码有某种规范。