Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/playx18/asmkit
Assembler toolkit: encoding and decoding of various architectures
https://github.com/playx18/asmkit
aarch64 assembler jit ppc64 riscv riscv64 x86
Last synced: 2 months ago
JSON representation
Assembler toolkit: encoding and decoding of various architectures
- Host: GitHub
- URL: https://github.com/playx18/asmkit
- Owner: playX18
- Created: 2024-10-25T16:39:44.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2024-11-12T15:46:38.000Z (2 months ago)
- Last Synced: 2024-11-12T16:23:38.243Z (2 months ago)
- Topics: aarch64, assembler, jit, ppc64, riscv, riscv64, x86
- Language: Rust
- Homepage:
- Size: 1.78 MB
- Stars: 5
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# asmkit
`#![no_std]` assembler library.
# Features
- X64, RISC-V, PPC, and ARM (WIP) assemblers
- Small and portable library.
- Tiny amount of dependencies:
- `libc`, `intrusive-collections`: for JIT support
- `paste`, `derive-more`: makes our life simpler when declaring arch-specific stuff over and over
- `smallvec`: for code generation to not heap allocate often
- Relocations are provided by CodeBuffer interface and assembler will use them if you use symbols in API.# Goals
- Auto-generated assemblers for as many as possible platform.
- Portability: library should built & run on any platform (even if it does not provide assembler for one), and assemblers on its own
must not be dependent on platform we built `asmkit` on.# TODO
- [ ] Add support for ARM64
- [ ] Add support for PPC64
- [ ] Add support for OpenPOWER (POWER9/POWER10)
- [ ] Add support for RW info and implicit operand info for all opcodes
- [ ] Cross-platform helpers to perform calls
- [ ] JSC/SpiderMonkey-like `MacroAssembler` to help generate assembly without worrying about target architecture
- [ ] Compiler/Builder interface: emit instructions as `Inst` structure and allow modifying them before emitting,
and also possibly to have regalloc pass over them.