fix(asm): match RISC-V branch and jump encodings
This commit is contained in:
@@ -75,6 +75,13 @@ Unreleased changes on the `development` branch.
|
||||
`ADDI`/`LUI`/`ADDIW` to `C.LI`/`C.LUI`/`C.ADDIW` when their immediate
|
||||
fits six signed bits. A byte-exact ground-truth test covers zero, small,
|
||||
negative, and 32-bit immediates against `GOARCH=riscv64 go tool asm`.
|
||||
- **RISC-V branch/jump compression.** `JMP`/`JAL` were being compressed to
|
||||
`C.J` and `BEQ`/`BNE` (with `X0`) to `C.BEQZ`/`C.BNEZ`, but `go tool asm`
|
||||
never emits these compressed forms. They now emit the 32-bit `JAL` and
|
||||
branch encodings the toolchain writes; the dead `C.J`/`C.BEQZ`/`C.BNEZ`
|
||||
encoders were removed, and the `C.LUI` direct-instruction compression now
|
||||
uses the correct six-bit signed range. A byte-exact ground-truth test
|
||||
covers the branch family and jumps against `GOARCH=riscv64 go tool asm`.
|
||||
- **Debugger watchpoint slots.** `gasm debug`'s `watch` command always used
|
||||
hardware watchpoint slot 0, so a second `watch` call silently overwrote
|
||||
the first. Watchpoint slots are now tracked in the `Session` (DR0–DR3);
|
||||
|
||||
Reference in New Issue
Block a user