- Notifications
You must be signed in to change notification settings - Fork9
d-edge/fasmi
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Fasmi is a F# to Jitted ASM / IL disassembler as a dotnet tool. Maintained by folks atD-EDGE.
Install fasmi as a global dotnet tool
dotnet tool install fasmi -g
or as a dotnet local tool
dotnet new tool-manifestdotnet tool install fasmi
Create a demo.fsx F# interactive script:
letinc x= x+1
run fasmi:
dotnet fasmi ./demo.fsx
and open at the generated demo.asm file:
Demo.inc(Int32)L0000:leaeax,[rcx+1]L0003:ret
run fasmi in watch mode:
dotnet fasmi ./demo.fsx -w
Open the demo.fsx and demo.asm files side by side in your favorite editor, make changes to demo.fsx and save. The demo.asm file is updated on the fly.
USAGE: dotnet fasmi [--help] [--console] [--output <string>] [--watch] [--platform <x86|x64>] [--language <asm|il>] <string>SOURCE: <string> the source fsx or dotnet assembly fileOPTIONS: --console, -c output to console --output, -o <string> specifiy the output file --watch, -w run in watch mode --platform, -p <x86|x64> specify the platform for disassembly --language, -l <asm|il> specify the output language (asm/il) --help display this list of options.
The input can be a fsx F# script file or any dotnet .dll assemlby file. F# scripts are compiled for net 5.0.
Using a dotnet assembly as an input, you can use fasmi on any dotnet language.
With the-c
flag, the result is output to console rather than in a file.
Use the-o
flag to specifie the target file path and name.
The-w
flag runs fasmi in watch mode. The file is recompiled and disassembled automatically when saved.
Use the-p
flag to force x64 or x86 platform for disassembly.
Specify the target language with the-l
flag:
- asm : disassemble the jit output as a x86/x86 .asm file
- il : disassemble the output as a MSIL .il file
This tool is based onAndrey Shchekin code forhttps://sharplab.io/.
Help and feedback is always welcome and pull requests get accepted.
- First open an issue to discuss your changes
- After your change has been formally approved please submit your PR against the develop branch
- Please follow the code convention by examining existing code
- Add/modify the README.md as required
- Add/modify unit tests as required
- Please document your changes in the upcoming release notes in RELEASE_NOTES.md
- PRs can only be approved and merged when all checks succeed (builds on Windows, MacOs and Linux)
About
F# -> ASM disassembler