Skip to content

TamTunnel/asmforge

Repository files navigation

NOVA Assembly IDE

NOVA Logo

Neural Optimization Virtual Assistant for Assembly

"Cursor for Assembly" - An AI-powered IDE for low-level programming

License: MIT Node.js Version Eclipse Theia


Overview

NOVA is an AI-powered Assembly language IDE built on Eclipse Theia, specifically designed for:

  • πŸ”§ Embedded Systems Developers
  • πŸ“Ÿ Firmware Engineers
  • πŸ–₯️ OS Developers
  • πŸ” Security Researchers

Key Features

Feature Description
Multi-Architecture Support x86/x64, ARM/AArch64, RISC-V
Assembler Integration NASM, GAS, MASM, FASM
AI-Powered Assistance Code explanation, optimization, bug detection
Visual Debugging Register viewer, memory visualizer, stack frames
Language Server Hover info, auto-complete, go-to-definition

Architecture

NOVA/
β”œβ”€β”€ browser-app/         # Web-based IDE application
β”œβ”€β”€ electron-app/        # Desktop IDE application
β”œβ”€β”€ packages/
β”‚   β”œβ”€β”€ nova-core/       # Core UI and services
β”‚   β”œβ”€β”€ nova-assembly-lsp/  # Assembly language server
β”‚   β”œβ”€β”€ nova-debug/      # GDB debug adapter
β”‚   └── nova-ai/         # AI assistant integration
β”œβ”€β”€ configs/             # Build configurations
└── docs/                # Documentation

Technology Stack

Layer Technology
Framework Eclipse Theia 1.55.0
Editor Monaco
Language TypeScript
Runtime Node.js 20+
AI Claude 3.5 (via Anthropic SDK)
LSP asm-lsp (Rust)
Debug GDB via Debug Adapter Protocol

Getting Started

Prerequisites

  • Node.js 20.0.0 or higher
  • npm 10.0.0 or higher
  • Git

Optional (for full functionality):

  • NASM - Intel syntax assembler
  • GCC/GAS - GNU Assembler
  • GDB - Debugger
  • asm-lsp - Assembly Language Server

Installation

# Clone the repository
git clone https://github.com/nova-assembly-ide/nova.git
cd NOVA

# Install dependencies
npm install

# Build all packages
npm run build

Running the IDE

Browser Mode (Development)

npm run start:browser

Open http://localhost:3000 in your browser.

Desktop Mode (Electron)

npm run start:electron

Development

Project Structure

packages/
β”œβ”€β”€ nova-core/           # Core extension
β”‚   β”œβ”€β”€ src/browser/     # Frontend components
β”‚   └── package.json
β”œβ”€β”€ nova-assembly-lsp/   # Language server client
β”‚   β”œβ”€β”€ src/browser/     # Frontend LSP client
β”‚   β”œβ”€β”€ src/node/        # Backend LSP server
β”‚   └── package.json
β”œβ”€β”€ nova-debug/          # Debug adapter
β”‚   β”œβ”€β”€ src/browser/     # Debug UI
β”‚   β”œβ”€β”€ src/node/        # GDB adapter
β”‚   └── package.json
└── nova-ai/             # AI integration
    β”œβ”€β”€ src/browser/     # Chat UI
    β”œβ”€β”€ src/node/        # AI service
    └── package.json

Commands

Command Description
npm install Install all dependencies
npm run build Build all packages
npm run watch Build and watch for changes
npm run start:browser Start browser IDE
npm run start:electron Start desktop IDE
npm run lint Run ESLint
npm run lint:fix Fix linting issues
npm run clean Clean build artifacts

Creating a New Extension

  1. Create a new directory in packages/:

    mkdir -p packages/nova-myext/src/browser
  2. Add package.json with theia-extension keyword:

    {
      "name": "@nova/nova-myext",
      "keywords": ["theia-extension"],
      "theiaExtensions": [{ "frontend": "lib/browser/myext-frontend-module" }]
    }
  3. Create the frontend module:

    import { ContainerModule } from "@theia/core/shared/inversify";
    
    export default new ContainerModule((bind) => {
      // Register your services here
    });
  4. Add the dependency to browser-app/package.json:

    "@nova/nova-myext": "*"

Configuration

Environment Variables

Create a .env file in the root directory:

# AI Configuration
ANTHROPIC_API_KEY=your-api-key
AI_MODEL=claude-3-sonnet-20240229

# Debug Configuration
GDB_PATH=/usr/bin/gdb
NASM_PATH=/usr/bin/nasm

# LSP Configuration
ASM_LSP_PATH=/usr/local/bin/asm-lsp

Supported File Extensions

Extension Language
.asm, .s, .S Assembly (auto-detect)
.nasm NASM syntax
.gas GAS/AT&T syntax
.inc Assembly include file

Roadmap

Phase 1: Foundation βœ…

  • Project structure
  • Theia integration
  • Basic syntax highlighting
  • Build system (NASM/GAS)

Phase 2: Debugging

  • GDB integration
  • Register viewer
  • Memory visualizer
  • Stack view

Phase 3: AI Integration

  • MCP server
  • Chat interface
  • Code explanation
  • Optimization suggestions

Phase 4: Multi-Architecture

  • ARM support
  • RISC-V support
  • Architecture switching

Phase 5: Polish

  • UI/UX refinement
  • Performance optimization
  • Distribution packages

Contributing

Contributions are welcome! Please read our Contributing Guide for details.

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.


Acknowledgments


Built with ❀️ for low-level programmers

About

AsmForge IDE - AI-powered Assembly language IDE built on Eclipse Theia

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors