它们之间的区别是使用 luac 和 string.dump() 创建的 lua 5.1 字节码吗?



如果是这样,有什么方法可以在两者之间进行转换吗?

我正在尝试将 string.dump 创建的一些字节代码加载到一个名为 unluac 的程序中,但它不起作用。

以下是我尝试反编译的字节,如果它对任何人有帮助:

2776807211461021611029212281120013090116224159228152117220228112001262381442281120013090116421282221221301731581511771941721816107218240791147814922690217140224159228841831832241592288610916922122811200130901162241592281521172202281120012623814422811200130901164212822212213017315815117719417218161072182407911478149226902171402241592288418318322415922886109169118211881382241467161902171409469112121411755848108222710419417218111417023040202236222710478149226584810823445157194172181190642101221301736107218224159228150191234213621188138224146716190217140946911212141175584810822271041941721811141702304020223622271047814922658481082344515719417218119064210122130173610721822415922815019123411231024622415922841812322268521418813822440202236315415315315315315327192

没有区别。两种情况最后将使用相同的luaU_dump()

请注意,Lua 正在字节码块标头中保存某些本机类型的大小。其中一个字段是类型size_t,这使得字节码不仅在具有不同字节序的主机之间不兼容,而且在 32 位和 64 位系统之间也不兼容。

简而言之 - 您必须使用与解释器版本相同的Lua编译器(luac(,并且针对将运行解释器的完全相同的平台进行编译。 也就是说,您不能使用 64 位 luac 来生成由 Lua VM 在 32 位程序中运行的字节码。

最新更新