/sigmadsp-asm

A standalone mono wrapper for the assembler within ADI SigmaStudio.

Primary LanguageC

This is a standalone mono wrapper for the assembler within ADI SigmaStudio.
Only tested with SigmaStudio 4.5 and the ADAU1401/1701 core.

Package dependencies (on Ubuntu 18.04):
- gcc
- make
- pkg-config
- libmono-2.0-dev
- libmono-corlib4.5-cli
- python3

To run the assembler, you need to first get a copy of SigmaStudio and copy the files
SigmaCompiler.dll and Sigma100Compiler.dll into this repository's folder. Since mono doesn't seem to
run obfuscated code very well, you will likely need to deobfuscate them to get it to run without
crashing. To do that, install de4dot (https://github.com/0xd4d/de4dot) on a Windows machine and run
the following in a terminal:

> de4dot.exe --dont-rename SigmaCompiler.dll Sigma100Compiler.dll

Then copy and rename the resulting *-cleaned.dll files into *.dll files in this repository's folder.

To run the assembler, supply a file containing assembly and optionally a netlist. The netlist is
required if you are assembling code generated by SigmaStudio. The files can be found in these
locations in an existing project:

- <project dir>\IC <n>_<project name>\as_code.enc      (assembly)
- <project dir>\IC <n>_<project name>\net_list.cir2    (netlist)

However, the assembly file is encoded and needs to be decoded back into plain text before it can be
used. This is the purpose of decode.py:

> ./decode.py as_code.enc > as_code.s

The resulting assembly file can then be opened and inspected, or assembled:

> make
> ./asm as_code.s net_list.cir2

This generates all of the assembler outputs into the output/ folder.

Of course, having an assembler is not that useful if you don't know how to write the target
assembly. Using decode.py, you can cross-reference a design in SigmaStudio with its corresponding
assembly to figure out the basics. See the SYNTAX file.