Различаются ли они между байт-кодом lua 5.1 с помощью luac и string.dump ()? - PullRequest
0 голосов
/ 18 сентября 2018

Если так, есть ли способ конвертировать между ними?

Я пытаюсь загрузить байт-код, созданный с помощью string.dump, в программу с именем unluac, однако она не работает.

Вот байты, которые я пытаюсь декомпилировать, если это кому-нибудь поможет:

\27\76\80\72\1\0\0\0\146\10\2\0\161\10\2\0\9\0\0\0\21\0\0\0\228\11\200\0\130\90\116\0\224\159\228\0\152\117\220\0\228\11\200\0\126\238\144\0\228\11\200\0\130\90\116\0\42\128\222\0\122\130\173\0\158\151\177\0\194\172\181\0\6\107\218\0\240\79\114\0\78\149\226\0\90\217\140\0\224\159\228\0\84\183\183\0\224\159\228\0\86\109\169\0\0\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\21\0\0\0\228\11\200\0\130\90\116\0\224\159\228\0\152\117\220\0\228\11\200\0\126\238\144\0\228\11\200\0\130\90\116\0\42\128\222\0\122\130\173\0\158\151\177\0\194\172\181\0\6\107\218\0\240\79\114\0\78\149\226\0\90\217\140\0\224\159\228\0\84\183\183\0\224\159\228\0\86\109\169\0\0\0\0\0\1\0\0\0\1\0\0\0\8\0\0\0\21\0\0\0\188\138\224\0\14\67\161\0\90\217\140\0\94\69\112\0\12\141\175\0\58\48\108\0\22\27\104\0\194\172\181\0\114\170\230\0\40\202\236\0\22\27\104\0\78\149\226\0\58\48\108\0\234\45\157\0\194\172\181\0\190\64\210\0\122\130\173\0\6\107\218\0\224\159\228\0\150\191\234\0\0\0\0\0\0\0\0\0\2\0\0\0\1\0\0\0\36\0\0\0\21\0\0\0\188\138\224\0\14\67\161\0\90\217\140\0\94\69\112\0\12\141\175\0\58\48\108\0\22\27\104\0\194\172\181\0\114\170\230\0\40\202\236\0\22\27\104\0\78\149\226\0\58\48\108\0\234\45\157\0\194\172\181\0\190\64\210\0\122\130\173\0\6\107\218\0\224\159\228\0\150\191\234\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\123\10\2\0\4\0\0\0\6\0\0\0\224\159\228\0\4\181\232\0\226\85\214\0\188\138\224\0\40\202\236\0\0\0\0\0\3\0\0\0\154\153\153\153\153\153\27\192\0\0\0\0\0\0\0\0

1 Ответ

0 голосов
/ 18 сентября 2018

Разницы нет. В обоих случаях в конце будет использоваться один и тот же luaU_dump().

Обратите внимание, что Lua сохраняет размеры некоторых собственных типов в заголовке блока байт-кода. Одно из этих полей имеет тип size_t, что делает байт-код несовместимым не только между хостами с различным порядком байтов, но также между 32- и 64-битными системами.

Вкратце - вы должны использовать Lua-компилятор (luac) той же версии, что и интерпретатор, и скомпилированный для той же платформы, на которой будет работать интерпретатор. То есть Вы не можете использовать 64-битный luac для создания байт-кода, который будет запускаться на Lua VM в 32-битной программе.

...