文件
JGZ_YES 7b0a4c535b feat(los4): add pure C compiler targeting Los4 ELF
Add src/PazeE.los4/ — a pure C implementation of the PazeE compiler
that generates static Los4 ELF executables (x86-64, int 0x80 syscalls).

Core components:
- Lexer, preprocessor, recursive-descent parser, AST
- Tree-walking interpreter (paze run) with breakpoints
- x86-64 code generator (SysV AMD64 ABI)
- Los4 ELF writer (4 PH layout matching doomlauncher.elf, base 0x400000)
- Runtime library as raw machine code: printf, sprintf, puts, malloc,
  memcpy, memset, strcmp, strlen, exit, etc.

Key fixes:
- Fix use-after-free: AST paze_str_t slices point into source buffer,
  so free(src) is deferred until after interpreter/codegen completes
- printf/sprintf support %d/%i/%u/%x/%c/%s/%% with rel32 jumps
- External function calls resolved via runtime offset lookup

All 14 test cases pass for both paze run and paze build.

Also includes DebuggerVM.cs and Program.cs updates for the C# compiler.
2026-08-10 21:32:39 +08:00

11 行
245 B
Plaintext

// localinit.pe — 验证局部数组初始化列表
int main(void) {
int arr[] = {1, 2, 3, 4, 5};
int s = 0;
for (int i = 0; i < 5; i++) {
s += arr[i];
}
printf("sum = %d\n", s); // 1+2+3+4+5 = 15
return 0;
}