/asl-wasm

WASM port of Alfred Arnold's The Macro Assembler AS

Primary LanguageCGNU General Public License v2.0GPL-2.0

Badges

License: GPL v2

CodeFactor Grade

CI Mac OS Catalina 10.15 CI Ubuntu 20.04 CI Windows Server 2019

Coverity Scan Analysis Coverity Scan

Snapshot build Latest snapshot

asl-releases

Custom version of AS, intended to track the original source and fix some issues.

Create and install the package

You need a C development toolchain, including make. You also need Git. You need to copy a file from Makefile.def-samples directory according to your platform to a file named Makefile.def on the same level as Makefile. You can then run the following commands:

   make binaries
   make install

Where the later will probably require administrative privileges. This has been tested on the following environments:

  • Windows 10 Home and Windows Server 2019 (32- and 64-bit builds)
  • Ubuntu 20.04 (64-bit build)
  • Mac OS Catalina 10.15 (64-bit build)

Preparing your disassembly

This is only relevant for Sonic disassemblies based on older versions of the Sonic Retro community disassemblies.

More recent versions of AS have made a few changes that impact older disassemblies. Here are the changes and how to deal with them:

  • AS by default will look for includes in the directory of the current file being assembled. This has an effect on files being included by other files inside a sibdirectory. In the S2 Git disassembly, this issue was dealt with in this commit, which just adds the disassembly's directory to the command line.
  • moveq no longer silently sign-extends a value; instead, it gives an error if you do use a value that cannot be represented as a byte sign-extended to 32-bits. In the S2 Git disassembly, this issue was dealt with in this commit in the S2 Git disassembly.
  • phase/dephase were changed to be a stack: you now need a matching dephase for every phase. This issue was dealt with in this commit in the S2 Git disassembly.
  • Adding a character constant to an integer results in a character constant, which can overflow the limits of a character and give an error. This issue was dealt with in this commit in the S2 Git disassembly.