feat(disasm): render the loong64 families x/arch names Unknown
x/arch's Plan 9 renderer decodes thirty-odd scalar loong64 operations perfectly but prints them as "Unknown OP args", and names the sign-extension pair EXT.W.B/EXT.W.H "?". The supplementary naming pass re-renders them with the toolchain's own spellings: the families whose operand order x/arch already prints the Plan 9 way trade only the mnemonic, and the pointer loads and stores, the acquire loads, the release stores, PRELD and ALSL are rebuilt from the decoded arguments with the toolchain's operand order and its raw displacement reading. ADDU16I.D, a macro helper the assembler never takes as input, keeps the decoder's Unknown render. The loong64 parity fixture grows from 73 to 385 rows, pinning every unique four-byte corpus word the decoder accepts, and the LL/SC displacement divergence in the encoder is documented for asm. Assisted-by: GLM 5.3
This commit is contained in:
1 parent
0f6e008c9a
commit
a7f9d5eb67
5 files changed
+579
-11
No files matched your search
+1
-1
@@ -69,7 +69,7 @@ func Decode(a arch.Arch, code []byte, addr uint64) (Instruction, error) {
|
||||
if err != nil {
|
||||
return Instruction{Addr: addr, Text: "???", Len: 4}, nil
|
||||
}
|
||||
return Instruction{Addr: addr, Text: loong64asm.GoSyntax(inst, addr, nil), Len: 4}, nil
|
||||
return Instruction{Addr: addr, Text: nameLoong64(inst, loong64asm.GoSyntax(inst, addr, nil)), Len: 4}, nil
|
||||
|
||||
default: // amd64
|
||||
inst, err := x86asm.Decode(code, 64)
|
||||
|
||||
Reference in new issue
Block a user