mm/tools/asm-differ
Anghelo Carvajal 194c99d80b
Subrepos update (#613)
* a

* git subrepo pull tools/asm-differ --force

subrepo:
  subdir:   "tools/asm-differ"
  merged:   "6f8f80b71"
upstream:
  origin:   "https://github.com/simonlindholm/asm-differ"
  branch:   "main"
  commit:   "6f8f80b71"
git-subrepo:
  version:  "0.4.3"
  origin:   "https://github.com/ingydotnet/git-subrepo.git"
  commit:   "2f68596"

* git subrepo pull tools/z64compress --force

subrepo:
  subdir:   "tools/z64compress"
  merged:   "9e7a6dbfa"
upstream:
  origin:   "https://github.com/z64me/z64compress.git"
  branch:   "main"
  commit:   "9e7a6dbfa"
git-subrepo:
  version:  "0.4.3"
  origin:   "https://github.com/ingydotnet/git-subrepo.git"
  commit:   "2f68596"

* git subrepo pull tools/ZAPD --force

subrepo:
  subdir:   "tools/ZAPD"
  merged:   "bf16ff7c4"
upstream:
  origin:   "https://github.com/zeldaret/ZAPD.git"
  branch:   "master"
  commit:   "bf16ff7c4"
git-subrepo:
  version:  "0.4.3"
  origin:   "https://github.com/ingydotnet/git-subrepo.git"
  commit:   "2f68596"

* Revert "git subrepo pull tools/z64compress --force"

This reverts commit a7cc87394e.
2022-01-16 18:30:31 +00:00
..
.gitignore Update asm-processor and diff.py (#278) 2021-08-25 01:11:41 -04:00
.gitrepo Subrepos update (#613) 2022-01-16 18:30:31 +00:00
.pre-commit-config.yaml Update subrepos (#281) 2021-09-21 20:13:03 -04:00
diff_settings.py Update subrepos (#281) 2021-09-21 20:13:03 -04:00
diff-stylesheet.css Update subrepos (#281) 2021-09-21 20:13:03 -04:00
diff.py Subrepos update (#613) 2022-01-16 18:30:31 +00:00
LICENSE Update asm-processor and diff.py (#278) 2021-08-25 01:11:41 -04:00
mypy.ini Update subrepos (#281) 2021-09-21 20:13:03 -04:00
README.md Update subrepos (#281) 2021-09-21 20:13:03 -04:00
screenshot.png Update asm-processor and diff.py (#278) 2021-08-25 01:11:41 -04:00

asm-differ

Nice differ for assembly code. Currently supports MIPS, PPC, AArch64, and ARM32; should be easy to hack to support other instruction sets.

Dependencies

  • Python >= 3.6
  • python3 -m pip install --user colorama watchdog python-Levenshtein (also dataclasses if on 3.6)

Usage

Create a file diff_settings.sh in some directory (see the one in this repo for an example). Then from that directory, run

/path/to/diff.sh [flags] (function|rom addr)

Recommended flags are -mwo (automatically run make on source file changes, and include symbols in diff). See --help for more details.

Tab completion

argcomplete can be optionally installed (with python3 -m pip install argcomplete) to enable tab completion in a bash shell, completing options and symbol names using the linker map. It also requires a bit more setup:

If invoking the script exactly as ./diff.py, the following should be added to the .bashrc according to argcomplete's instructions:

eval "$(register-python-argcomplete ./diff.py)"

If that doesn't work, run register-python-argcomplete ./diff.py in your terminal and copy the output to .bashrc.

If setup correctly (don't forget to restart the shell), complete | grep ./diff.py should output:

complete -o bashdefault -o default -o nospace -F _python_argcomplete ./diff.py

Note for developers or for general troubleshooting: run export _ARC_DEBUG= to enable debug output during tab-completion, it may show otherwise silenced errors. Use unset _ARC_DEBUG or restart the terminal to disable.

Contributing

Contributions are very welcome! Some notes on workflow:

black is used for code formatting. You can either run black diff.py manually, or set up a pre-commit hook:

pip install pre-commit black
pre-commit install

Type annotations are used for all Python code. mypy should pass without any errors.

PRs that skip the above are still welcome, however.

The targeted Python version is 3.6. There are currently no tests.