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/twitchyliquid64/golang-asm/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 }
34