jompiler/AGENTS.md
10x Developer 98dc7ca20a Update AGENTS.md to document the new test suite
Added documentation for running tests with ./run-tests.sh using test-current.js
2026-05-03 18:15:51 +02:00

41 lines
No EOL
1.6 KiB
Markdown

# Jompiler Agent Instructions
This is a C compiler that targets x86-64 ELF object files.
## Key Commands
- `node index.js input.c` - Compile and link input.c to produce a.out
- `node index.js input.c && ./a.out` - Compile, link, and run the compiled program
- `./run-tests.sh` - Run the full test suite using test-current.js
## Architecture
This is a single-file compiler written in JavaScript with the following phases:
1. Lexing (tokenization) - `lex()` function
2. Parsing (AST construction) - `parse()` function
3. Lowering (x86-64 code generation) - `lower()` function
4. Linking - `link()` function that shells out to `gcc`
## Dependencies
The system requires:
- Node.js (tested with Node.js 22)
- GCC (for linking)
- LLVM tools (for development environment - installed via nix)
## Important Details
- The compiler supports basic C constructs: integers, variables, basic arithmetic, function declarations, function calls, returns, and basic control flow
- Uses the standard C calling convention for x86-64
- Generates x86-64 ELF object files
- Has no support for complex C features like pointers, conditionals, loops, arrays
- Supports the same C standard as referenced in the comment: C11 (ISO/IEC 9899:2011)
- Has a specific test case in `input.c` that demonstrates basic functionality
- The `dump-main.gdb` file is used for debugging and disassembly
## Runtime Environment
- Uses Nix for environment setup: `nix-shell` or `direnv` with the provided `shell.nix`
- Requires `node` to be available from PATH
- Requires `gcc` and `gdb` for linking and debugging
- Uses `spawn` to execute external commands (GCC linking, GDB debugging)