tcl - .tbc 到 .tcl 文件

标签 tcl

这是一个奇怪的问题,我进行了搜索,但找不到任何满意的答案。

我有一个编译 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/

相关文章:

list - Tcl/TK : How do I append or insert into a nested list?

使用 TCL API 启用程序包自动加载的 C++ 应用程序

python - 如何在Python中运行TCL脚本?

tcl - 关闭文件名中的代字号替换?

list - 如何从tcl列表中删除空元素

tcl - 用于添加特定信号的 gtkwave tcl 脚本

tcl - 如何拉出/和之间的每根字符串;在tcl

ruby - Tcl 是否具有 PE​​RL 和 Ruby backtic 的等价物

variables - 从导入的过程访问 Tcl 命名空间变量

list - 返回 tcl 8.4 列表列表中重复项的索引