feat(asm): add LoongArch encoder with ELF and GOOBJ emission
Assisted-by: DeepSeek V4 Pro
This commit is contained in:
@@ -9,6 +9,24 @@ and this project adheres to [Conventional Commits](https://www.conventionalcommi
|
||||
|
||||
Unreleased changes on the `development` branch.
|
||||
|
||||
### Added
|
||||
|
||||
- **LoongArch encoder (Phase 5).** `gasm asm` can now assemble `_loong64.s`
|
||||
files: the full LoongArch64 instruction set with the dual-form arithmetic
|
||||
mnemonics, the 16/21-bit branch families, the MOV pseudo-instruction and
|
||||
its immediate-constant expansions, FP/SP frame mapping, SB/global symbol
|
||||
references (pcalau12i pairs) and ELF64 emission
|
||||
(`gasm asm --format elf`). Ground-truth verification against
|
||||
`GOARCH=loong64 go tool asm` matches byte-for-byte; GOOBJ emission
|
||||
(`gasm asm --format goobj`) is proven end-to-end by linking the object
|
||||
into a cross-compiled `go build`.
|
||||
- **GOOBJ DWARF symbols.** The GOOBJ emitters now write the per-function
|
||||
DWARF symbols the linker requires (the subprogram DIE and the `.debug_line`
|
||||
program, byte-identical to `cmd/asm`'s), and the pc-value table deltas are
|
||||
in the architecture's MinLC units as the runtime expects — the amd64 link
|
||||
test now genuinely substitutes the gasm object, and the amd64/loong64
|
||||
end-to-end GOOBJ link tests pass.
|
||||
|
||||
### Fixed
|
||||
|
||||
- **Debugger watchpoint slots.** `gasm debug`'s `watch` command always used
|
||||
|
||||
Reference in New Issue
Block a user