github.com/go-asm/go@v1.21.1-0.20240213172139-40c5ead50c48/cmd/obj/riscv/list.go (about)

     1  // Copyright 2019 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package riscv
     6  
     7  import (
     8  	"fmt"
     9  
    10  	"github.com/go-asm/go/cmd/obj"
    11  )
    12  
    13  func init() {
    14  	obj.RegisterRegister(obj.RBaseRISCV, REG_END, RegName)
    15  	obj.RegisterOpcode(obj.ABaseRISCV, Anames)
    16  }
    17  
    18  func RegName(r int) string {
    19  	switch {
    20  	case r == 0:
    21  		return "NONE"
    22  	case r == REG_G:
    23  		return "g"
    24  	case r == REG_SP:
    25  		return "SP"
    26  	case REG_X0 <= r && r <= REG_X31:
    27  		return fmt.Sprintf("X%d", r-REG_X0)
    28  	case REG_F0 <= r && r <= REG_F31:
    29  		return fmt.Sprintf("F%d", r-REG_F0)
    30  	default:
    31  		return fmt.Sprintf("Rgok(%d)", r-obj.RBaseRISCV)
    32  	}
    33  }