Language server for NASM/GAS/GO Assembly
Find a file
Will Lillis 2943e33e3b Specify asm-lsp target configuration via config file.
Enable specifying which assemblers and which architectures to be enabled/disabled when interacting with the LSP server. Use this feature to e.g., disable showing the `go` opcode documentation or to show only the documentation of the x86_64 architecture.

Closes #4
2023-10-01 12:04:34 +03:00
.github Switch to rust 2020-07-13 07:54:40 +01:00
demo Update gif 2020-07-27 08:40:59 +01:00
opcodes Switch to rust 2020-07-13 07:54:40 +01:00
samples Rename tool look-asm -> asm-lsp 2020-07-26 18:22:19 +01:00
src Specify asm-lsp target configuration via config file. 2023-10-01 12:04:34 +03:00
.gitignore Specify asm-lsp target configuration via config file. 2023-10-01 12:04:34 +03:00
Cargo.lock Specify asm-lsp target configuration via config file. 2023-10-01 12:04:34 +03:00
Cargo.toml Specify asm-lsp target configuration via config file. 2023-10-01 12:04:34 +03:00
LICENSE Add License 2023-09-29 13:25:11 +03:00
README.md Specify asm-lsp target configuration via config file. 2023-10-01 12:04:34 +03:00

Language Server for GAS/GO Assembly

Goal

Provide hovering and (TODO) autocompletion for assembly files written in the GAS/NASM or GO assembly flavors. It supports assembly files for the x86 or x86_64 instruction sets.

This tool can serve as reference when reading the assembly output of a program. This way you can query what each command exactly does and deliberate about whether the compiler is producing the desired output or whether you have to tweak your code for optimisation.

Installation

Using cargo

Install using the cargo package manager, either from crates.io or from github:

cargo install asm-lsp
# or to get the latest version from github
cargo install --git https://github.com/bergercookie/asm-lsp

Using .deb (Debian/Ubuntu)

Debian packages are also provided in the here

Set up as a language server

Add a section like the following in your settings.json file:

"asm-lsp": {
    "command": "asm-lsp",
    "filetypes": [
        "asm", "s", "S"
    ]
}

[OPTIONAL] Configure via .asm-lsp.toml

Add a .asm-lsp.toml file like the following to your project's root directory to selectively target specific assemblers and/or instruction sets:

version = "0.1"

[assemblers]
gas = true
go = false

[instruction_sets]
x86 = false
x86_64 = true

Demo

Hovering / Documentation support

Autocomplete

TODO

Acknowledgements

Current rust package builds on top of the opcodes python package