A CLI to navigate through Hashlink bytecode files. This is the command line interface for hlbc, the Hashlink bytecode disassembler, analyzer, decompiler and assembler.
This crate is a program, see hlbc for a library to use.

Download a prebuilt binary from the releases page.
Or build from the latest version :
shell
cargo install hlbc-cli
Or build the crate from the latest sources :
```shell git clone https://github.com/Gui-Yom/hlbc cd hlbc/hlbc-cli cargo build --release
```
hlbc-cli <file> [-c <command>] [-w <command>]
You get access to a prompt where you can enter commands.
You can execute commands on startup with the -c switch.
e.g. Dump all strings from the bytecode then exit : hlbc-cli main.hl -c "s ..; exit".
If you omit the exit command, the app will simply launch the normal prompt after executing the startup commands.
With -w, the given command will execute each time the file changes. The cli won't show a command prompt.
You can also pass a .hx file containing Haxe source code directly to be compiled on the fly if the haxe compiler is
present in the PATH.
info General information about the bytecodehelp Help messageentrypoint Get the bytecode entrypointexplain <op> Get information about an opcodei|int <idx> Get the int at indexf|float <idx> Get the float at indexs|string <idx> Get the string at indexsstr <str> Find a stringd|debugfile <idx> Get the debug file name at indexsfile <str> Find the debug file namedt|type <idx> Get the type at indexg|global <idx> Get global at indexc|constant <idx> Get constant at indexn|native <idx> Get native at indexfnh <findex> Get header of function (findex)fn <findex> Get function (findex)sfn <str> Get function namedinfile <idx|str> Find functions in filefileof <findex> Get the file where findex is definedrefto <any@idx> Find references to a given bytecode elementsaveto <filename> Serialize the bytecode to a filecallgraph <findex> <depth> Create a dot call graph from a function and a max depthdecomp <findex> Decompile a functiondecomptype <idx> Decompile a classIn most of the commands that accept an index, you can pass a Rust style range too : a..b, ..b, a.., a..=b, ...
Where ..10 means 'select the first 10 items' and .. means 'display everything'.
More info about the decompiler here.
See CHANGELOG.md.
A wiki detailing the specifics of Hashlink bytecode is available here.
fn (entrypoint) to display the
entry function or refto (sstr Hello)