feat(asm): the operand forms and defines GOROOT writes

Assisted-by: GLM 5.3 Flash
This commit is contained in:
2026-09-21 21:17:34 +02:00
parent 5382c9a8e4
commit 8cfd40aac8
9 changed files with 277 additions and 22 deletions
+16
View File
@@ -7,6 +7,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [development]
### Fixed
- **The operand forms GOROOT writes.** Numeric PC-relative jumps
(`JEQ 2(PC)`, the park loop `JMP 0(PC)`) resolve with the toolchain's
own instruction counting and fold jump-to-jump chains exactly as its
branch optimiser does; symbol immediates (`MOVQ $sym(SB), AX`)
assemble to the toolchain's RIP-relative LEA with an R_PCREL
relocation; negated constant expressions in operands (`ADJSP
$-(REGS - 8)`, the shape the cgo ABI macros write) fold; and `gasm
asm` predefines the `GOARCH_<arch>` and `GOOS_<goos>` macros the go
command passes to `go tool asm`, so GOROOT headers' `#ifdef
GOARCH_amd64` platform blocks (`go_tls.h`'s `get_tls` and friends)
select as intended. The GOROOT corpus measure moves to 261 of 353
files assembling for every target architecture (73.9 %), 87.5 % of
the real-code corpus, from 70.8 % and 82.2 %.
### Added
- **Per-architecture reference pages.** [docs/asm/](docs/asm/README.md)