podman

Форк
0
104 строки · 2.9 Кб
1
// cmd/9l/list.c from Vita Nuova.
2
//
3
//	Copyright © 1994-1999 Lucent Technologies Inc.  All rights reserved.
4
//	Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net)
5
//	Portions Copyright © 1997-1999 Vita Nuova Limited
6
//	Portions Copyright © 2000-2008 Vita Nuova Holdings Limited (www.vitanuova.com)
7
//	Portions Copyright © 2004,2006 Bruce Ellis
8
//	Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net)
9
//	Revisions Copyright © 2000-2008 Lucent Technologies Inc. and others
10
//	Portions Copyright © 2009 The Go Authors. All rights reserved.
11
//
12
// Permission is hereby granted, free of charge, to any person obtaining a copy
13
// of this software and associated documentation files (the "Software"), to deal
14
// in the Software without restriction, including without limitation the rights
15
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
16
// copies of the Software, and to permit persons to whom the Software is
17
// furnished to do so, subject to the following conditions:
18
//
19
// The above copyright notice and this permission notice shall be included in
20
// all copies or substantial portions of the Software.
21
//
22
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
25
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
26
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
27
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
28
// THE SOFTWARE.
29

30
package ppc64
31

32
import (
33
	"github.com/twitchyliquid64/golang-asm/obj"
34
	"fmt"
35
)
36

37
func init() {
38
	obj.RegisterRegister(obj.RBasePPC64, REG_DCR0+1024, rconv)
39
	obj.RegisterOpcode(obj.ABasePPC64, Anames)
40
}
41

42
func rconv(r int) string {
43
	if r == 0 {
44
		return "NONE"
45
	}
46
	if r == REGG {
47
		// Special case.
48
		return "g"
49
	}
50
	if REG_R0 <= r && r <= REG_R31 {
51
		return fmt.Sprintf("R%d", r-REG_R0)
52
	}
53
	if REG_F0 <= r && r <= REG_F31 {
54
		return fmt.Sprintf("F%d", r-REG_F0)
55
	}
56
	if REG_V0 <= r && r <= REG_V31 {
57
		return fmt.Sprintf("V%d", r-REG_V0)
58
	}
59
	if REG_VS0 <= r && r <= REG_VS63 {
60
		return fmt.Sprintf("VS%d", r-REG_VS0)
61
	}
62
	if REG_CR0 <= r && r <= REG_CR7 {
63
		return fmt.Sprintf("CR%d", r-REG_CR0)
64
	}
65
	if r == REG_CR {
66
		return "CR"
67
	}
68
	if REG_SPR0 <= r && r <= REG_SPR0+1023 {
69
		switch r {
70
		case REG_XER:
71
			return "XER"
72

73
		case REG_LR:
74
			return "LR"
75

76
		case REG_CTR:
77
			return "CTR"
78
		}
79

80
		return fmt.Sprintf("SPR(%d)", r-REG_SPR0)
81
	}
82

83
	if REG_DCR0 <= r && r <= REG_DCR0+1023 {
84
		return fmt.Sprintf("DCR(%d)", r-REG_DCR0)
85
	}
86
	if r == REG_FPSCR {
87
		return "FPSCR"
88
	}
89
	if r == REG_MSR {
90
		return "MSR"
91
	}
92

93
	return fmt.Sprintf("Rgok(%d)", r-obj.RBasePPC64)
94
}
95

96
func DRconv(a int) string {
97
	s := "C_??"
98
	if a >= C_NONE && a <= C_NCLASS {
99
		s = cnames9[a]
100
	}
101
	var fp string
102
	fp += s
103
	return fp
104
}
105

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.