@@ -23,6 +23,7 @@ import (
23
23
24
24
"golang.org/x/arch/arm/armasm"
25
25
"golang.org/x/arch/arm64/arm64asm"
26
+ "golang.org/x/arch/loong64/loong64asm"
26
27
"golang.org/x/arch/ppc64/ppc64asm"
27
28
"golang.org/x/arch/s390x/s390xasm"
28
29
"golang.org/x/arch/x86/x86asm"
@@ -367,6 +368,19 @@ func disasm_arm64(code []byte, pc uint64, lookup lookupFunc, byteOrder binary.By
367
368
return text , 4
368
369
}
369
370
371
+ func disasm_loong64 (code []byte , pc uint64 , lookup lookupFunc , byteOrder binary.ByteOrder , gnuAsm bool ) (string , int ) {
372
+ inst , err := loong64asm .Decode (code )
373
+ var text string
374
+ if err != nil || inst .Op == 0 {
375
+ text = "?"
376
+ } else if gnuAsm {
377
+ text = fmt .Sprintf ("%-36s // %s" , loong64asm .GoSyntax (inst , pc , lookup ), loong64asm .GNUSyntax (inst ))
378
+ } else {
379
+ text = loong64asm .GoSyntax (inst , pc , lookup )
380
+ }
381
+ return text , 4
382
+ }
383
+
370
384
func disasm_ppc64 (code []byte , pc uint64 , lookup lookupFunc , byteOrder binary.ByteOrder , gnuAsm bool ) (string , int ) {
371
385
inst , err := ppc64asm .Decode (code , byteOrder )
372
386
var text string
@@ -406,6 +420,7 @@ var disasms = map[string]disasmFunc{
406
420
"amd64" : disasm_amd64 ,
407
421
"arm" : disasm_arm ,
408
422
"arm64" : disasm_arm64 ,
423
+ "loong64" : disasm_loong64 ,
409
424
"ppc64" : disasm_ppc64 ,
410
425
"ppc64le" : disasm_ppc64 ,
411
426
"s390x" : disasm_s390x ,
@@ -416,6 +431,7 @@ var byteOrders = map[string]binary.ByteOrder{
416
431
"amd64" : binary .LittleEndian ,
417
432
"arm" : binary .LittleEndian ,
418
433
"arm64" : binary .LittleEndian ,
434
+ "loong64" : binary .LittleEndian ,
419
435
"ppc64" : binary .BigEndian ,
420
436
"ppc64le" : binary .LittleEndian ,
421
437
"s390x" : binary .BigEndian ,
0 commit comments