Skip to content

Releases: xarantolus/ax

v0.6.0

24 Feb 17:59
Compare
Choose a tag to compare
  • Vastly improved python dev scripts, thank you @Shadow-Devil :)
  • Improve dev container
  • Upgrade Rust edition
  • A few new instructions: Cdqe, Cld, Movd, Movups, Neg, Xorps
  • ELF parsing now actually uses ELF LOAD segments instead of the previous, wrong way of loading
    • Still does not work perfectly with libc
  • Auto-generated API documentation
  • Convenience functions for registering some syscalls (Brk, Pipe, Exit, ArchPrctl)
  • ELF loading now supports symbol tables
  • Tracing: know which jumps, calls and returns were executed
  • Call stack tracking, makes debugging easier
  • A few new non-stdlib C examples
  • Some large internal refactorings

Full Changelog: v0.5.0...v0.6.0

Refactoring, bugfixes

21 Jan 10:26
Compare
Choose a tag to compare

This release contains many internal improvements, refactorings and bugfixes.
It also adds new tests for the public-facing API, making it less likely that it will be broken.
The test scripts can now permutate input flags, allowing them to work on more instructions (new tests using this capability for already implemented instructions were also added).

New instruction:

  • ADC (all variants)

Full Changelog: v0.4.0...v0.5.0

Binary releases

14 Jan 19:06
Compare
Choose a tag to compare

In addition to the WebAssembly package, a new binary for Linux and Windows is also being built.
It currently only emulates the write syscall and has some bugs that need to be fixed, but it is another way of getting an ELF binary to run.

You can e.g. download download this binary and then run the following on Windows:

./ax.exe ./alphabet.bin some other args

Both the Linux and Windows binary are for x86-64/amd64.

Full Changelog: v0.3.2...v0.4.0

Documentation + Register write improvements

08 Jan 10:51
Compare
Choose a tag to compare

Out-of-range register writes now throw an exception instead of an uncatchable panic.

Also the generated TypeScript files now come with inline documentation that is displayed when hovering the function name.

Full Changelog: v0.3.1...v0.3.2

Demo improvements

07 Jan 10:33
Compare
Choose a tag to compare

Some more examples on environment variables, improved demo site

Full Changelog: v0.3.0...v0.3.1

Program initialization

06 Jan 12:46
Compare
Choose a tag to compare

The new init_stack_program_start function allows easily setting up the stack as it is on Linux. This makes it even easier to run ELF binaries

See the example in the README for full details:

let ax = Axecutor.from_binary(/* elf file content as Uint8Array */);

// Set up the stack according to the System V ABI.
// This sets up memory locations for command-line arguments and environment variables
// and writes the stack pointer to RSP
ax.init_stack_program_start(
  8n * 1024n, // Stack size
  ["/bin/my_binary", "arg1", "arg2"],
  [ /* environment variables */ ]
);

Support for programs using libc is still in progress, but has gotten slightly better (still not working).

Full Changelog: v0.2.1...v0.3.0

Documentation improvements

02 Jan 10:35
Compare
Choose a tag to compare

v0.2.0

31 Dec 20:48
96b9206
Compare
Choose a tag to compare

All register and memory read/write functions now take bigints as inputs and return bigints. This makes them easier to use from JavaScript

Full Changelog: v0.1.1...v0.2.0

v0.1.1

30 Dec 08:40
Compare
Choose a tag to compare

Mostly internal changes, an improved demo site and an automated NPM release pipeline.

https://www.npmjs.com/package/ax-x86

Full Changelog: v0.1.0...v0.1.1

v0.1.0

12 Dec 08:44
7e5f993
Compare
Choose a tag to compare

This is the first binary release of this emulator. It doesn't support much, but most instructions I care about work and are covered by tests.

To see it in action, visit https://memeasm.010.one.

Full Changelog: https://github.com/xarantolus/ax/commits/v0.1.0