Friday , May 7 2021

rochus-keller / LjTools, Hacker News



This is a parser, browser, assembler and test VM for LuaJIT 2.0 bytecode written in C and Qt. See more information about LuaJIT.

The goal of this project (work in progress) is to better understand how LuaJIT works, and to support the development of alternative front ends which generate LuaJIT bytecode (as it is eg done in

The viewer can be used to edit and compile Lua source code and display it side by side with its corresponding LuaJIT bytecode. The test VM implements a subset of LuaJIT bytecodes to study and validate their functions (see the examples subfolder).

Here is a screenshot:LjBcViewer Screenshot

The assembler can be used to directly program and test with LuaJIT bytecode. The syntax is defined in LjAsm.ebnf; here is a PDF of the syntax: It slightly abstracts from original LuaJIT bytecode and supports automatic register allocation. Documentation of the syntax is TBD; varargs and for loops are not yet supported (because most likely not used by the new front ends).

Here is a screenshot:LjAsmEditor Screenshot

Build Steps

Follow these steps if you want to build LjBcViewer yourself:

  1. Make sure a Qt 5.x (libraries and headers) version compatible with your C compiler is installed on your system.
  2. A compiled version of LuaJIT 2.0 is also required; your distro likely includes a dev package. Alternatively download the source from gzand run the Makefile; make sure the resulting is accessible to the linker.
  3. Create a directory; let’s call it BUILD_DIR
  4. Download the source code from the BUILD_DIR; rename the subdirectory to “LjTools”.
  5. Download the GuiTools source code from unpack it to the BUILD_DIR; rename it to “GuiTools”.
  6. Goto the BUILD_DIR / LjTools subdirectory and executeQTDIR / bin / qmake the Qt documentation concerning QTDIR).
  7. Run make; after a couple of seconds you will find the executable in the build directory.

Alternatively you can open using QtCreator and build it There. is compiled in the same way. The application makes use of a parser generated by Coco / R based on input from EbnfStudio (see There is no other dependency than the Qt Basic library. The repository already contains the generated files. In order to regenerate LjasParser.cpp / h you have to use this version of Coco / R:

The repository includes the original LuaJIT 2.0.5 headers for convenience.


Brave Browser
Read More

About admin

Leave a Reply

Your email address will not be published. Required fields are marked *