{"repo":"fjl/geas","free":true,"listed":false,"github":"https://github.com/fjl/geas","clone":"git clone https://github.com/fjl/geas.git","description":"The Good Ethereum Assembler","language":"Go","stars":145,"topics":["ethereum","evm"],"license":"LGPL-3.0","category":"blockchain-web3","readme_excerpt":"This is Geas – the Good Ethereum Assembler[^1] – a macro assembler for the EVM. You can use it to create any contract for Ethereum, though it's probably a bad idea to write your complicated business logic using EVM assembly. For most contracts, you should use a high-level language compiler like Solidity. The purpose of Geas is creating specialty programs and tinkering with the EVM at a low level. [^1]: Under no circumstances must it be called the geth assembler. Installation You can use the go tool to install the latest released version. This creates a geas binary in the current directory: env \"GOBIN=$PWD\" go install github.com/fjl/geas/cmd/geas@latest For development of geas, clone the repository and then run go build ./cmd/geas . Usage To create bytecode from an assembly file, run the tool with a filename as argument. ./geas -a file.eas There is also a disassembler. To disassemble hex bytecode from standard input, run: ./geas -d - To see all supported flags, run geas with no arguments. Editor Support For Emacs, this repository offers geas.el, an extension of asm-mode with features specific to Geas. VIM users may be interested in vim-geas. Use as a Go Library You can also use the assembler as a library. See the API documentation to get started. Language The Geas language is intended to be a direct representation of EVM bytecode. The EVM is a stack-based virtual machine operating on 256-bit values, with a somewhat limited instruction set. Unlike high-level languages (such as ","default_branch":null,"files":null,"tree":[],"storefront":"/r/fjl","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/fjl/geas/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}