feat(asm): add AArch64 arm64 encoder with ground-truth verification
Assisted-by: MiMo V2.5 Pro
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user