{"id":21077543,"url":"https://github.com/simonlindholm/asm-differ","last_synced_at":"2025-05-16T08:30:51.103Z","repository":{"id":37958344,"uuid":"183968585","full_name":"simonlindholm/asm-differ","owner":"simonlindholm","description":"Assembly diff script","archived":false,"fork":false,"pushed_at":"2025-03-24T19:55:23.000Z","size":648,"stargazers_count":118,"open_issues_count":32,"forks_count":53,"subscribers_count":10,"default_branch":"main","last_synced_at":"2025-05-12T11:52:20.209Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/simonlindholm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-04-28T23:14:07.000Z","updated_at":"2025-05-04T10:47:31.000Z","dependencies_parsed_at":"2024-03-10T23:33:49.678Z","dependency_job_id":"7d3544ed-d122-4925-84d1-53420bd782e9","html_url":"https://github.com/simonlindholm/asm-differ","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonlindholm%2Fasm-differ","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonlindholm%2Fasm-differ/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonlindholm%2Fasm-differ/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonlindholm%2Fasm-differ/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/simonlindholm","download_url":"https://codeload.github.com/simonlindholm/asm-differ/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254496059,"owners_count":22080645,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-19T19:37:02.868Z","updated_at":"2025-05-16T08:30:46.068Z","avatar_url":"https://github.com/simonlindholm.png","language":"Python","readme":"# asm-differ\n\nNice differ for assembly code. Currently supports MIPS, PPC, AArch64, ARM32, SH2, SH4, and m68k; should be easy to hack to support other instruction sets.\n\n![](screenshot.png)\n\n## Dependencies\n\n- Python \u003e= 3.6\n- `python3 -m pip install --user colorama watchdog levenshtein cxxfilt` (also `dataclasses` if on 3.6)\n\n## Usage\n\nCreate a file `diff_settings.py` in some directory (see the one in this repo for an example). Then from that directory, run\n\n```bash\n/path/to/diff.py [flags] (function|rom addr)\n```\n\nRecommended flags are `-mwo` (automatically run `make` on source file changes, and include symbols in diff). See `--help` for more details.\n\n### Tab completion\n\n[argcomplete](https://kislyuk.github.io/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:\n\nIf invoking the script **exactly** as `./diff.py`, the following should be added to the `.bashrc` according to argcomplete's instructions:\n\n```bash\neval \"$(register-python-argcomplete ./diff.py)\"\n```\n\nIf that doesn't work, run `register-python-argcomplete ./diff.py` in your terminal and copy the output to `.bashrc`.\n\nIf setup correctly (don't forget to restart the shell), `complete | grep ./diff.py` should output:\n\n```bash\ncomplete -o bashdefault -o default -o nospace -F _python_argcomplete ./diff.py\n```\n\nNote 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.\n\n### Contributing\n\nContributions are very welcome! Some notes on workflow:\n\n`black` is used for code formatting. You can either run `black diff.py` manually, or set up a pre-commit hook:\n```bash\npip install pre-commit black\npre-commit install\n```\n\nType annotations are used for all Python code. `mypy` should pass without any errors. (This is all checked in CI.)\n\nThere are a handful of unit tests (test.py), however a comparison-based regression test suite is still missing.\nThere are loose plans on adding one using scratches from decomp.me as a corpus. Help on this front appreciated!\n\nThe targeted Python version is 3.7.\n","funding_links":[],"categories":["Reverse Engineering"],"sub_categories":["Tools and Disassemblers"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimonlindholm%2Fasm-differ","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsimonlindholm%2Fasm-differ","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimonlindholm%2Fasm-differ/lists"}