Skip to content

Document JNasm Assembler - Value 5 #80

@LSantha

Description

@LSantha

JNasm Assembler

Document the JNasm Assembler JNode concept in the wiki.

Value: 5

Concept Summary

JNode's custom x86 assembler with macro preprocessing and instruction encoding. JNasm provides a high-level assembly language for JNode, enabling efficient x86 code generation with preprocessing and macro support.

Key Files

  • builder/src/builder/org/jnode/jnasm/JNAsm.java
  • builder/src/builder/org/jnode/jnasm/assembler/Assembler.java

Occurrences

~200 references in jnasm package

Wiki Status

Partially covered (JNasm-Assembler-Design.md)

Bridges

Build system, Assembly, Binary generation

Instructions

Skill to Use

Use the [[update-wiki|update-wiki skill]] (load with skill({ name: "update-wiki" })) for understanding JNode internals.

Context Research

Study JNAsm.java and Assembler.java to understand the assembler. Review how JNasm processes assembly source, how macros work, and how instructions are encoded. Research how JNasm integrates with the build system and generates binary output.

Update index.md

  • Pages table: Add entry for JNasm-Assembler.md
  • Concepts → Pages table: Add "JNasm Assembler" mapping to [[JNasm-Assembler]]
  • Source Path → Pages table: Add mappings for builder/src/builder/org/jnode/jnasm/
  • Task Routing table: Add relevant task route(s)

Task Routing Suggestions

  1. Assembly development: JNasm is central to assembly work
  2. Macro development: Understanding macros is key for code generation
  3. Build integration: JNasm integrates with Ant build system

Wiki Page Structure

# JNasm Assembler

> JNode's custom x86 assembler with macro preprocessing and instruction encoding.

## Overview
2-3 paragraph explanation of JNasm, its role in the build system, and how it enables efficient assembly programming.

## Key Components
| Class / File | Role |
|---|---|
| `builder/src/builder/org/jnode/jnasm/JNAsm.java` | Main assembler entry point |
| `builder/src/builder/org/jnode/jnasm/assembler/Assembler.java` | Assembler implementation |

## How It Works
Explanation of how JNasm works, how assembly source is processed, how macros work, how instructions are encoded, and how binary output is generated.

## Gotchas & Non-Obvious Behavior
- JNasm syntax differs from standard NASM/YASM
- Macro expansion must be careful with scoping
- Instruction encoding must match x86 specifications

## Related Pages
- [[Build-System]]
- [[x86-Assembly]]
- [[Binary-Generation]]

Related Concepts: Assembler, Assembly, Build system, Macro, Instruction encoding

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions