Skip to content

Latest commit

 

History

History
36 lines (28 loc) · 2.54 KB

CONTRIBUTING.md

File metadata and controls

36 lines (28 loc) · 2.54 KB

The extension is all TypeScript. It does not employ language server and language features are implemented directly.

Setup

  1. Install VS Code.
  2. Fork and clone the repo.
  3. Install node.js
  4. Open command prompt.
  5. From the cloned root run npm install.
  6. Run npm run build.
  7. Run VS Code.
  8. Install extensions:
  1. Open folder in VS Code.
  2. You should be able to run the extension and tests from VS Code.

Coding guidelines

Nothing special, standard TypeScript conventions. For formatting - tab size is 2, spaces only. Test runner is Jest.

Circular dependencies

After adding new files do run madge --circular . from the root to detect any circular dependencies and avoid headaches at runtime such as caught exceptions like TypeError: Class extends value undefined is not a constructor or null. Alternatively, install dpdm, although madge seems to detect more and better.

  • npm i -g dpdm
  • dpdm ./src/extension.ts

Code sources

Tokenizer and parser are based on my earlier work at Microsoft on R Tools. The code was simplified, translated to TypeScript and adapted for the ARM assembly language syntax (GAS/GCC variety).

Instruction documentation

Instruction documentation for A32 and A64 was generated from ARM sources, downloads are here. This documentation is short version that is used in hover and completions. Generator code is in a separate repo.

The extension can open full instruction documentation in browser contained in HTML files from ARM documentation archives unpacked into another separate repo.

Directives documentation

Fetched directly from GAS/GCC Web site. No local caching is implemented at the moment. See documentation.ts