ass-js icon indicating copy to clipboard operation
ass-js copied to clipboard

Assembler.js — X86_64 and Ethereum

(‿*‿)
Assembler.js

Assembler implemented in JavaScript:

  • Pluggable design
  • X64 and Ethereum assembler
  • See supported X64 mnemonics
  • Standalone, use it in browser or Node.js

Install

npm i ass-js

Getting Started

Store 0xBABE in RAX register

import {X64} from 'ass-js';

const asm = X64();
asm._('mov', ['rax', 0xBABE]);

Compile to machine code

console.log(code.compile()); // <Buffer 48 c7 c0 be ba 00 00>

Show text representation

console.log(String(code));
// 000 main:
// 001   movq rax, 0x0000BABE ; 000000|000000 0x48, 0xC7, 0xC0, 0xBE, 0xBA, 0x00, 0x00 7 bytes

Use templates

const template = _ => {
    _('mov', ['rdx', 0xC001]);
    _('mov', ['rax', 0xBABE]);
};

asm.code(template);

Docs

  • Plugins
    • X64
      • Getting started
      • Operands
      • Expressions
    • Ethereum
    • Data
      • d* - add binary data
      • res* - add uninitialized data
      • incbin - include binary file
    • Util
      • label - insert a label using label and lbl
      • align - align code to some factor boundary
  • Reference
    • Asm
    • Expression
    • Compilation
  • Examples
    • Hello world
    • cpuid

License

Unlicense — public domain.