feat(asm): add AArch64 arm64 encoder with ground-truth verification

Assisted-by: MiMo V2.5 Pro
This commit is contained in:
2026-08-20 13:33:39 +02:00
parent 01dcc3b86e
commit 4221ec5741
14 changed files with 2640 additions and 22 deletions
+19 -14
View File
@@ -25,17 +25,19 @@ gasm diff compare machine code of two .s files
gasm profile show basic-block structure of functions
```
> **Status: Phase 4 — done, Phase 5 underway.** Phase 1 (the language
> foundation, linter, formatter and language server) shipped in v0.1.0;
> Phase 2 (the standalone assembler — the full amd64 instruction set plus
> ELF and GOOBJ object emission) in v0.12.0; Phase 3 (dynamic
> analysis — JIT execution, differential testing, ABI checks and coverage
> profiling) in v0.25.0; Phase 4 (interactive debugger — ptrace-based,
> breakpoints, watchpoints, stepping, vector register display, named buffer
> allocation) in v0.27.0; RISC-V encoder (RV64IMAFDC + RVC, ELF emission,
> ground-truth, GOOBJ) in v0.28.0–v0.29.0; LoongArch encoder (the full
> instruction set with the MOV expansions, ELF and GOOBJ emission, and
> ground-truth verification) after v0.29.0. See [Roadmap](#roadmap).
> **Status: Phase 5 — done.** Phase 1 (the language foundation, linter,
> formatter and language server) shipped in v0.1.0; Phase 2 (the standalone
> assembler — the full amd64 instruction set plus ELF and GOOBJ object
> emission) in v0.12.0; Phase 3 (dynamic analysis — JIT execution,
> differential testing, ABI checks and coverage profiling) in v0.25.0;
> Phase 4 (interactive debugger — ptrace-based, breakpoints, watchpoints,
> stepping, vector register display, named buffer allocation) in v0.27.0;
> RISC-V encoder (RV64IMAFDC + RVC, ELF emission, ground-truth, GOOBJ) in
> v0.28.0–v0.29.0; LoongArch encoder (the full instruction set with the MOV
> expansions, ELF and GOOBJ emission, and ground-truth verification) after
> v0.29.0; arm64 encoder (the full integer instruction set with the MOV
> expansions, bitmask immediates, ELF and GOOBJ emission, and ground-truth
> verification) completing Phase 5. See [Roadmap](#roadmap).
## Architecture support
@@ -266,7 +268,7 @@ portable Go implementation every kernel is derived from.
memory read/write, disassembly at PC (x86asm), and source-line ↔ offset
mapping.
### Phase 5 — the other architectures · *in progress*
### Phase 5 — the other architectures · *done*
- **RISC-V encoding — done.** RV64IMAFDC instruction set, RVC compression,
MOV pseudo-instruction, SB/global symbols (AUIPC pairs), ELF64 and GOOBJ
@@ -276,8 +278,11 @@ portable Go implementation every kernel is derived from.
handling, SB/global symbol references (pcalau12i pairs), ELF64 and GOOBJ
emission, and ground-truth verification against `go tool asm` — the emitted
GOOBJ links into a real `go build` for `GOARCH=loong64`.
- **Remaining:** arm64 encoding, plus the same encode-and-verify treatment
(instruction tables already generated from the toolchain).
- **arm64 encoding — done.** The AArch64 integer instruction set with the
MOV pseudo-instruction and its immediate-constant expansions (MOVZ/MOVN/MOVK
and logical bitmask immediates), FP/SP frame handling, SB/global symbol
references (ADRP+ADD pairs), jump chain folding, ELF64 and GOOBJ emission,
and ground-truth verification against `go tool asm`.
## Principles