All Projects → d-edge → fasmi

d-edge / fasmi

Licence: other
F# -> ASM disassembler

Programming Languages

F#
602 projects

Projects that are alternatives of or similar to fasmi

JitPad
On the fly disassemble C# code based on JitDasm
Stars: ✭ 119 (-29.17%)
Mutual labels:  jit
faucon
NVIDIA Falcon Microprocessor Suite
Stars: ✭ 28 (-83.33%)
Mutual labels:  disassembler
Batch-First
A JIT compiled chess engine which traverses the search tree in batches in a best-first manner, allowing for neural network batching, asynchronous GPU use, and vectorized CPU computations.
Stars: ✭ 27 (-83.93%)
Mutual labels:  jit
agsutils
contains utils for AGS: game extractor, repacker, disassembler and assembler
Stars: ✭ 30 (-82.14%)
Mutual labels:  disassembler
tenderjit
JIT for Ruby that is written in Ruby
Stars: ✭ 388 (+130.95%)
Mutual labels:  jit
transonic
🚀 Make your Python code fly at transonic speeds!
Stars: ✭ 93 (-44.64%)
Mutual labels:  jit
DoubleStar
A personalized/enhanced re-creation of the Darkhotel "Double Star" APT exploit chain with a focus on Windows 8.1 and mixed with some of my own techniques
Stars: ✭ 140 (-16.67%)
Mutual labels:  jit
qemujs
Qemu.js source code with proof-of-concept machine-code-to-WASM JIT.
Stars: ✭ 101 (-39.88%)
Mutual labels:  jit
ethdasm
Tool for auditing Ethereum contracts
Stars: ✭ 52 (-69.05%)
Mutual labels:  disassembler
dotnet-httpie
Amazing HTTP command-line tool powered by .NET, inspired by httpie
Stars: ✭ 24 (-85.71%)
Mutual labels:  dotnet-tool
ida-bpf-processor
BPF Processor for IDA Python
Stars: ✭ 41 (-75.6%)
Mutual labels:  disassembler
gas
A tool that transforms functions from object files into Go assembly. This repository has migrated to https://gitlab.com/opennota/gas
Stars: ✭ 18 (-89.29%)
Mutual labels:  disassembler
dotnet-document
A tool for auto-generating XML documentation for your C# code
Stars: ✭ 59 (-64.88%)
Mutual labels:  dotnet-tool
openj9
Eclipse OpenJ9: A Java Virtual Machine for OpenJDK that's optimized for small footprint, fast start-up, and high throughput. Builds on Eclipse OMR (https://github.com/eclipse/omr) and combines with the Extensions for OpenJDK for OpenJ9 repo.
Stars: ✭ 2,973 (+1669.64%)
Mutual labels:  jit
RSqueak
A Squeak/Smalltalk VM written in RPython.
Stars: ✭ 78 (-53.57%)
Mutual labels:  jit
dotnet-format
A GitHub Action to run dotnet-format as part of your workflow
Stars: ✭ 25 (-85.12%)
Mutual labels:  dotnet-tool
natsu-clr
il2cpp transpiler and runtime compatible with .Net Core
Stars: ✭ 76 (-54.76%)
Mutual labels:  msil
sham
A DSL for runtime code generation in racket
Stars: ✭ 63 (-62.5%)
Mutual labels:  jit
rpaheui
Industrial-strength implementaiton of Aheui written in RPython with JIT
Stars: ✭ 52 (-69.05%)
Mutual labels:  jit
semblance
Disassembler for Windows executables. Supports 16-bit NE (New Executable), MZ (DOS), and PE (Portable Executable, i.e. Win32) files.
Stars: ✭ 110 (-34.52%)
Mutual labels:  disassembler

fasmi logo

version download license


Fasmi is a F# to Jitted ASM / IL disassembler as a dotnet tool. Maintained by folks at D-EDGE.

fasmi demo

Getting Started

Install fasmi as a global dotnet tool

dotnet tool install fasmi -g

or as a dotnet local tool

dotnet new tool-manifest
dotnet tool install fasmi

Quickstart

Create a demo.fsx F# interactive script:

let inc x = x+1

run fasmi:

dotnet fasmi ./demo.fsx

and open at the generated demo.asm file:

Demo.inc(Int32)
L0000: lea eax, [rcx+1]
L0003: ret

Watch mode

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

USAGE: dotnet fasmi [--help] [--console] [--output <string>] [--watch] [--platform <x86|x64>] [--language <asm|il>] <string>

SOURCE:

    <string>              the source fsx or dotnet assembly file

OPTIONS:

    --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.

Input

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.

Console

With the -c flag, the result is output to console rather than in a file.

Output

Use the -o flag to specifie the target file path and name.

Watch

The -w flag runs fasmi in watch mode. The file is recompiled and disassembled automatically when saved.

Platform

Use the -p flag to force x64 or x86 platform for disassembly.

Language

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

Acknowledgment

This tool is based on Andrey Shchekin code for https://sharplab.io/.

Contributing

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)

License

MIT

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].