这是一个奇怪的问题,我进行了搜索,但找不到任何满意的答案。
我有一个编译 tcl
文件,即 .tbc
文件。那么有没有办法转换这个.tbc
文件回 .tcl
文件。
我读了 here有人提到了 ::tcl_traceCompile
说这个可以用来拆.tbc
文件。但是作为一个新手 tcl 用户,我不确定这是否可能,或者说更多,究竟如何使用它。
虽然我知道 tcl 编译器不会编译所有的语句,所以这些语句可以很容易地在 .tbc
中看到。文件,但我们可以得到整个 tcl
返回 .tbc
文件。
任何评论都会很棒。
最佳答案
不,或者至少在没有大量工作的情况下不是;你正在做一些付出相当多的努力来防止的事情(TBC 格式旨在保护商业代码不被窥探)。
TBC文件格式是Tcl的字节码的一种编码,一般情况下根本不保存; TBC 代表 Tcl 字节码。 TBC 格式数据仅由一种工具生成,即商业“Tcl 编译器”(最初由 Sun 或 Scriptics 编写;该工具可追溯到大约过渡时期),这确实是对内置编译器的利用每个 Tcl 系统都有一些序列化代码。它还尽可能多地剥离原始源代码。使用的编码令人不快;如果可以,您想避免编写自己的加载程序,而是使用 tbcload
扩展来做工作。
然后,您需要将它与禁用一些防御性检查的 Tcl 的自定义构建一起使用,以便您可以使用 tcl::unsupported::disassemble
反汇编加载的代码。命令(通常拒绝拆开来自 tbcload
的任何东西);该命令从 Tcl 8.5 开始存在。之后,您必须从字节码中拼凑出代码在做什么;我根本不知道有什么工具可以做到这一点,但字节码大多是相当高级的,因此对于小段代码来说并不太难。disassemble
没有手册页;毕竟它正式不受支持!但是,我链接到的那个 wiki 页面应该涵盖了您入门所需的大部分内容。
关于tcl - .tbc 到 .tcl 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14633101/