
added loong64 support for gnu format disassembler and plan9 format disassembler in golang.org/x/arch $ go get -u golang.org/x/arch@v0.11.0 $ go mod tidy $ go mod vendor Co-authored-by: Huang Qiqi <huangqiqi@loongson.cn>
94 lines
2.1 KiB
Go
94 lines
2.1 KiB
Go
// Copyright 2024 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package loong64asm
|
|
|
|
// Naming for Go decoder arguments:
|
|
//
|
|
// - arg_fd: a Floating Point operand register fd encoded in the fd[4:0] field
|
|
//
|
|
// - arg_fj: a Floating Point operand register fj encoded in the fj[9:5] field
|
|
//
|
|
// - arg_fk: a Floating Point operand register fk encoded in the fk[14:10] field
|
|
//
|
|
// - arg_fa: a Floating Point operand register fa encoded in the fa[19:15] field
|
|
//
|
|
// - arg_rd: a general-purpose register rd encoded in the rd[4:0] field
|
|
//
|
|
// - arg_rj: a general-purpose register rj encoded in the rj[9:5] field
|
|
//
|
|
// - arg_rk: a general-purpose register rk encoded in the rk[14:10] field
|
|
//
|
|
// - arg_fcsr_4_0: float control status register encoded in [4:0] field
|
|
//
|
|
// - arg_cd_2_0: condition flag register encoded in [2:0] field
|
|
//
|
|
// - arg_sa2_16_15: shift bits constant encoded in [16:15] field
|
|
//
|
|
// - arg_code_14_0: arg for exception process routine encoded in [14:0] field
|
|
//
|
|
// - arg_ui5_14_10: 5bits unsigned immediate
|
|
//
|
|
// - arg_lsbw: For details, please refer to chapter 2.2.3.8 of instruction manual
|
|
//
|
|
// - arg_msbw: For details, please refer to chapter 2.2.3.9 of instruction manual
|
|
//
|
|
// - arg_hint_4_0: hint field implied the prefetch type and the data should fetch to cache's level
|
|
// 0: load to data cache level 1
|
|
// 8: store to data cache level 1
|
|
// other: no define
|
|
//
|
|
// - arg_si12_21_10: 12bits signed immediate
|
|
|
|
type instArg uint16
|
|
|
|
const (
|
|
_ instArg = iota
|
|
// 1-5
|
|
arg_fd
|
|
arg_fj
|
|
arg_fk
|
|
arg_fa
|
|
arg_rd
|
|
// 6-10
|
|
arg_rj
|
|
arg_rk
|
|
arg_op_4_0
|
|
arg_fcsr_4_0
|
|
arg_fcsr_9_5
|
|
// 11-15
|
|
arg_csr_23_10
|
|
arg_cd
|
|
arg_cj
|
|
arg_ca
|
|
arg_sa2_16_15
|
|
// 16-20
|
|
arg_sa3_17_15
|
|
arg_code_4_0
|
|
arg_code_14_0
|
|
arg_ui5_14_10
|
|
arg_ui6_15_10
|
|
// 21-25
|
|
arg_ui12_21_10
|
|
arg_lsbw
|
|
arg_msbw
|
|
arg_lsbd
|
|
arg_msbd
|
|
// 26-30
|
|
arg_hint_4_0
|
|
arg_hint_14_0
|
|
arg_level_14_0
|
|
arg_level_17_10
|
|
arg_seq_17_10
|
|
// 31-35
|
|
arg_si12_21_10
|
|
arg_si14_23_10
|
|
arg_si16_25_10
|
|
arg_si20_24_5
|
|
arg_offset_20_0
|
|
// 36~
|
|
arg_offset_25_0
|
|
arg_offset_15_0
|
|
)
|