跨架构luac输出

9 lua bytecode

我正在研究一种所谓的墨盒,用于基于地理位置的WheriGo(http://wherigo.com)游戏.用于这些盒式磁带的体系结构是32位和大端.但是,我的luac将创建64位和小端的块.

虽然有一个WheriGo的在线编译服务,但我宁愿能够为自己生成适当的二进制格式.特别是,因为有些事情我宁愿在剥离的块中隐藏一些loadstring(),而不是让完整的调试信息可用.

所以我的问题是:生成一个lua工具链有多难,它为不同的体系结构生成字节代码,而不是它运行的那个?

mir*_*los 1

您始终可以将 32 位大端机器作为 VM 运行,例如Debian/mips 的Aur\xc3\xa9lien\xe2\x80\x99s预构建映像(注释)。它\xe2\x80\x99 会很慢但可以工作并且可以轻松自动化。(进行一次 dist 升级,至少从挤压中升级到喘息状态,然后获取最新的 Lua。)

\n\n

我经常运行这样的虚拟机\xe2\x80\xa6,它很慢,但我将其视为批处理:我启动一个作业(apt 或编译),然后偶尔查看它(或者:第二天)看看是否完成。大多数时候,这种方法效果很好。当然,有些东西在仿真中无法正常工作(例如,由于仿真器错误或差异),但为了获得大端32位Lua,这可能有效)。

\n\n

建议阅读: ARM 上的lua 字节码可移植性中端双精度(均在 lua 邮件列表中) \xe2\x80\x93 因为 PocketPC 机器主要是 ARM,所以您可能会遇到这种情况。最好检查实际的 Wherigo 墨盒,看看它们使用什么设置\xe2\x80\xa6

\n\n

这些帖子的要点是:字节序、sizeof(int)字节sizeof(size_t)sizeof(Instruction)、字节序sizeof(lua_Number)和类型lua_Number必须相同才能跨架构兼容(Luiz Henrique de Figueiredo 说),并且中间字节序浮点数(单字节和双字节)确实存在于野外(史蒂夫·多诺万和迪米特·“马尔基亚”·斯坦内夫)。

\n\n

请告诉我你是否这样做\xe2\x80\x93 我很感兴趣,因为我自己就是寻宝者(尽管需要弄清楚如何玩卡带,但我的平台没有播放器)。

\n