Features include semantic coloring, tooltips/hover, completions, code formatting, basic syntax checking. Assembly syntax is GAS/GCC
Colorizer
Adds new colorable items:
directive
instruction,
register
and the following modifiers:
definition (symbols defined via .set or similar)
declaration (data declarations such as .asciz).
include (.include directive)
condition (.if/.endif/... directives)
macro (.macro directive)
macroName (name of the macro)
macroParameter, (macro parameter reference via \\)
unrecognized (unrecognized instruction)
To customize colors combine item with modifiers, like directive.include.
Hover
Completions
Instruction documentation in browser
Formatting
Formatter by default automatically derives instruction set (architecture) as well as indentation and casing settings from the document. Options can be set to non-auto values in settings.
Limitations
ARM Assembler syntax is not supported.
Syntax check is basic, the feature is far from complete and is diagnostics is off by default.
Formatting does not support using tabs. Tabs are converted to spaces.
The code is partially based on my work when at Microsoft: R Tools for VS Code, which, in turn, was forked off Microsoft RTVS. Mostly tokenizer and parser, translated from C# to TypeScript, simplified and adapted for assembly language syntax.
Some original C# code was already translated to TypeScript in Pyright, hence small amount was taken from there (fragments primarily related to the tokenization and supporting classes).
Documentation on instruction was extracted from ARM doc archives downloaded from here. All documentation belongs to Arm Limited.
Documentation on directives in hover tooltips is fetched online directly from the GAS Web site.
Bugs and feedback
Feel free to file bugs and suggestions at vscode-arm repo.