bergercookie / asm-lsp

Language server for NASM/GAS/GO Assembly

Home Page:https://crates.io/crates/asm-lsp

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Language Server for GAS/GO Assembly

crates.io Tests

Goal

Provide hovering, autocompletion, signature help, go to definition, and view references 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

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 and/or ~/.config/asm-lsp/ (project configs will override global configs) to selectively target specific assemblers and/or instruction sets.

version = "0.1"

[assemblers]
gas = true
go = false

[instruction_sets]
x86 = false
x86_64 = true

Demos / Features Documentation

Hovering / Documentation support

Autocomplete

Goto Definition

View References

Signature Help

  • Triggering signature help is dependent on your editor and LSP client.
    • Using Neovim's built in LSP client, this can be done via the command :lua vim.lsp.buf.signature_help().
    • Using coc, this issue comment suggests the remap inoremap <silent> ,s <C-r>=CocActionAsync('showSignatureHelp')<CR> to trigger signature help in insert mode.

Acknowledgements

Current rust package builds on top of the opcodes python package

About

Language server for NASM/GAS/GO Assembly

https://crates.io/crates/asm-lsp

License:BSD 2-Clause "Simplified" License


Languages

Language:Rust 100.0%