Crate lunify

Source
Expand description

§Lunify

Tests Code Quality Test Coverage License: MIT crates.io

A crate for converting Lua byte code to different versions and formats.

Currently Lua 5.0 and Lua 5.1 are supported inputs.

§Example

use lunify::{Format, LunifyError, Endianness, BitWidth, unify};

// Lua byte code in any suppored format
let input_bytes = include_bytes!("../test_files/lua50.luab");

// Desired output format. May specify pointer width, endianness, sizes of datatypes, ...
let output_format = Format {
    endianness: Endianness::Little,
    // Convert from byte code that runs on a 32 bit machine to byte code that runs on a 64 bit machine
    size_t_width: BitWidth::Bit64,
    ..Format::default()
};

// Convert input bytes to the desired format
let output_bytes = unify(input_bytes, &output_format, &Default::default());

Modules§

lua50
Lua 5.0 settings.
lua51
Lua 5.1 settings.

Structs§

Format
Lua byte code format.
InstructionLayout
Memory layout of instructions inside the Lua byte code (SIZE_*, POS_*).
Settings
Lua 5.0 and Lua 5.1 compile constants. The Lua interpreter is compiled with certain predefined constants that affect how the byte code is generated. This structure represents a small subset of the constants that are relevant for Lunify. If the byte code you are trying to modify was complied with non-standard constants, you can use these settings to make it compatible.

Enums§

BitWidth
The width of Lua-internal types in bits.
Endianness
The endianness of Lua-internal types.
LunifyError
Error during unify.
OperandType
All possible operands of an instruction.

Functions§

unify
Takes Lua byte code in a supported format and converts it to byte code in the specified output Format. Returns LunifyError on error.