Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>NASM IDENew to Visual Studio Code? Get it now.
NASM IDE

NASM IDE

Lemion

| (0) | Free
Language Server Protocol-based IntelliSense, hover docs, cross-file extern support, library-aware diagnostics, and build tasks for NASM-style x86/x86_64 assembly.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

NASM IDE

[!IMPORTANT] This project was entirely vibecoded aside from the two repos that were forked. README was reviewed by a human but that's about it.

Language support for 64/32-bit x86 NASM assembly in VS Code and code-oss (Open VSX): IntelliSense, hover docs, cross-file extern navigation, library-aware diagnostics, doc comments, and one-command builds.

Fork origins: vscode-nasm-intellisense by Nomayer Alam (Alec269, MIT), with ideas from asm-lsp (Berger Cookie, BSD-2). The server, grammar, instruction database, and all features below were substantially extended here. License: MIT, see LICENSE.md.

image

Features

  • ~190 instructions with unabbreviated names (jae - Jump if Above or Equal), 136 registers, SSE/AVX scalar float, core x87 FPU, directives.
  • Labels, section names, global/extern/equ/%define symbols, and all other symbolic words scoped as entity.name.function (yellow in most dark themes; force it everywhere with the snippet below).
  • 57 common libc functions (printf, malloc, memcpy, …) with C signatures and link hints (-lc vs -lm).
  • Autogenerated docs for other configured libraries (X11, …): prototypes from their headers, summaries from man pages (see below).
  • Doc comments above labels and equ constants (see below).
  • As-you-type (debounced) or on-save diagnostics.
  • NASM IDE: Pick Link Libraries - fuzzy-search every linkable -l flag on your system, saved to the workspace.

Library documentation

Anything in nasmIde.libraries gets hover/completion docs, not just libc:

  1. The -l flag is matched to its .pc file (pkg-config), which gives the library's include dirs.
  2. Headers there are scanned for C prototypes (single- and multi-line; macros, typedefs, and internals skipped).
  3. A prototype is kept only if the library itself exports that symbol (nm -D check), so shared include trees can't misattribute functions.
  4. One-line summaries come from man 3 / man 2, looked up lazily and cached; parameters render with System V AMD64 registers like libc.

Header-declared symbols also count as "provided" for unresolved-extern warnings (covers static inline helpers with no nm entry). Libraries without a .pc file (like bare -lc) only get nm-based quieting.

Doc comments

; Adds two numbers.
; @param eax 32 bit signed integer
; @param ebx dword second operand
; @return eax the sum
addition:

Force symbol yellow in any theme (settings.json):

"editor.tokenColorCustomizations": {
    "textMateRules": [
        { "scope": "entity.name.function.nasm", "settings": { "foreground": "#DCDCAA" } }
    ]
}
  • Tags: @param [size] name desc, @return [size] [name] desc.
  • Sizes: byte word dword qword tword oword yword zword, N bytes (before or after the name).
  • Prefixes: ;, ;;, ; @, ;---@ all work; ;--- separators and blank lines end the block; global/extern lines are transparent to it.
  • Shows on hover (at the definition and at every call) and in completions.

Commands / tasks

  • NASM IDE: Restart Language Server · Show Server Status · Toggle Diagnostics · Pick Link Libraries
  • Tasks: NASM IDE: build (default build, Ctrl+Shift+B), run, clean.

Configuration (nasmIde)

Key Default What
nasmPath "nasm" Assembler executable for diagnostics
arch "x86_64" elf64 vs elf32 diagnostics format
diagnostics.enable true Master switch
diagnostics.mode "asYouType" Or "onSave"
diagnostics.debounceMs 400 As-you-type delay
diagnostics.unresolvedExterns true Warn on unknown extern
libraries ["c"] -l flags (folder scope, use the picker)
build.linker "ld" Or "gcc"
build.sources ["src/*.asm"] Globs relative to the folder
build.objDir "obj" Intermediate .o dir
build.output "bin/${workspaceFolderBasename}" Linked binary
build.extraLdFlags [] e.g. ["-dynamic-linker", "/lib64/ld-linux-x86-64.so.2"]

Developing

npm install && cd server && npm install && cd ..
npm run compile   # tsc client + server
npm test          # unit + LSP integration + headless client tests
npm run package   # nasm-ide-*.vsix

Publishing

vsce publish                 # Visual Studio Marketplace
ovsx publish nasm-ide-*.vsix # Open VSX (code-oss / VSCodium)
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft