diff options
| author | _ov4 <ov4@ov4.org> | 2026-10-21 12:45:37 +0000 |
|---|---|---|
| committer | _ov4 <ov4@ov4.org> | 2026-10-21 12:45:37 +0000 |
| commit | 410dd10ffd3270e6f7972f1c9aeb07fb7812fee5 (patch) | |
| tree | 494276105bd00f79af5afc10e705a351ff5ad8e4 /AGENTS/ARCH | |
| parent | 1f724200fe3493e4571b034ed81477d2a5ce1aad (diff) | |
docs(agents): link plain-text references to the split topic files
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Diffstat (limited to 'AGENTS/ARCH')
| -rw-r--r-- | AGENTS/ARCH/BUILD.md | 7 | ||||
| -rw-r--r-- | AGENTS/ARCH/DRIVER.md | 4 | ||||
| -rw-r--r-- | AGENTS/ARCH/INSTALL.md | 3 | ||||
| -rw-r--r-- | AGENTS/ARCH/OVERVIEW.md | 4 |
4 files changed, 11 insertions, 7 deletions
diff --git a/AGENTS/ARCH/BUILD.md b/AGENTS/ARCH/BUILD.md index dcad28d..2e4cc69 100644 --- a/AGENTS/ARCH/BUILD.md +++ b/AGENTS/ARCH/BUILD.md @@ -8,7 +8,7 @@ development files to build; NONE supports both outputs. The following commands use Debian/Ubuntu's versioned compiler names: ```bash -# Prepare dependencies using the recommendations in doc/build.md. +# Prepare dependencies using the recommendations in doc/build.md (see DEPENDENCIES.md). cmake -S . -B build -DCPSC_RUN_MODE=EMBEDDED \ -DCMAKE_C_COMPILER=clang-23 -DCMAKE_CXX_COMPILER=clang++-23 cmake --build build @@ -26,7 +26,8 @@ automatically. Manually linking emitted `.ll` files still requires a C++ driver TRY/CATCH/ENDTRY and bare THROW are compiler extensions. Runtime checks print the source line and error reason to stderr before throwing anonymous exceptions; the final handler in generated main -prints `Unhandled exception. Program terminated.` to stderr and returns 1. -Nightly CI runs compiler tests, including embedded exception execution, on +prints `Unhandled exception. Program terminated.` to stderr and returns 1 +(lowering details: [RUNTIME_CHECKS_EXCEPTIONS.md](../SUBSYSTEMS/RUNTIME_CHECKS_EXCEPTIONS.md)). +[Nightly CI](NIGHTLY.md) runs compiler tests, including embedded exception execution, on Linux, Windows and macOS with LLVM 23. Platform-specific changes require successful checks on the native runner. diff --git a/AGENTS/ARCH/DRIVER.md b/AGENTS/ARCH/DRIVER.md index 69a2402..49a85be 100644 --- a/AGENTS/ARCH/DRIVER.md +++ b/AGENTS/ARCH/DRIVER.md @@ -1,6 +1,8 @@ # Driver behavior -Driver behavior (`tools/driver/main.cc`): +Driver behavior (`tools/driver/main.cc`). CodeGen-side unit and entry-point invariants are in +[CONVENTIONS/EXCEPTIONS_AND_UNITS.md](../CONVENTIONS/EXCEPTIONS_AND_UNITS.md); diagnostic +style is in [CONVENTIONS/SYMBOLS_AND_ERRORS.md](../CONVENTIONS/SYMBOLS_AND_ERRORS.md). - One or more source files, with optional `-S`, `-o path`, `-r` and `-no-std`; options may appear among inputs. Each stream is parsed independently. INCLUDE paths are relative to the including file, diff --git a/AGENTS/ARCH/INSTALL.md b/AGENTS/ARCH/INSTALL.md index 4c609c5..bf6a1bc 100644 --- a/AGENTS/ARCH/INSTALL.md +++ b/AGENTS/ARCH/INSTALL.md @@ -36,7 +36,8 @@ generate `build/doc/cpsc.1`. The section 1 source is `doc/cpsc.1.md`; section 7 `doc/language/**/*.7.md`. `doc` builds every page, preserving the language category subdirectories, as `.7` on Unix or `.html` on Windows. Sources are discovered with CONFIGURE_DEPENDS; per-page commands regenerate only changed pages. -`cmake/ManualLinks.lua` renders cross-references as man names or local HTML links. +`cmake/ManualLinks.lua` renders cross-references as man names or local HTML links +(manual source rules: [MAN.md](../MAN.md)). Windows `mingw32-make -C build install` builds the HTML manual and invokes `install.ps1` through Windows PowerShell with the build directory and `CMAKE_INSTALL_PREFIX`. The default Windows prefix is the per-user Programs diff --git a/AGENTS/ARCH/OVERVIEW.md b/AGENTS/ARCH/OVERVIEW.md index 6984646..5bb4a86 100644 --- a/AGENTS/ARCH/OVERVIEW.md +++ b/AGENTS/ARCH/OVERVIEW.md @@ -14,7 +14,7 @@ files ──> Lexer ──> Parser ──> vector<unique_ptr<StmtAST>> ──> C Fixed value representation (ABI — much code infers types backwards from these): INTEGER = `i64`, REAL = `double`, BOOLEAN = `i1`, CHAR = `i8`. STRING is the standard-library class `%record.STRING`, owning a std::string handle; C_STRING is a raw NUL-terminated pointer. User-defined types (§4): enum = `i64` (0-based ordinal), pointer = opaque `ptr`, record = named struct `%record.NAME`. Enums and pointers are LLVM-identical to INTEGER/C_STRING **by design** — their identity lives in the type -*name*, enforced upstream (see CONVENTIONS.md). Allocation byte sizes are never computed +*name*, enforced upstream (see [CONVENTIONS/TYPES.md](../CONVENTIONS/TYPES.md)). Allocation byte sizes are never computed host-side: the module has no DataLayout string, so every allocation size is a null-GEP `sizeof` constant (`TypeSystem::getSizeOfConstant`) folded by the backend. @@ -24,7 +24,7 @@ CScalar/CPointer identities are canonical C types, not pseudocode alias names; native widths and signedness come from sizeof/type traits, while floating formats come from numeric_limits (long double size alone is insufficient). Programs use the compiler's build ABI; cross-target emission is not implemented. EXTERN "C" -declarations call C functions from INCLUDE_OBJ objects (see SUBSYSTEMS.md). +declarations call C functions from INCLUDE_OBJ objects (see [SUBSYSTEMS/EXTERN.md](../SUBSYSTEMS/EXTERN.md)). CTypeGen handles typed numeric conversions, casts, native arithmetic and I/O. Crossing C/pseudocode domains requires a cast, including literals. C arithmetic uses C++ promotions, except that / always returns pseudocode REAL. |
