podman
81 строка · 1.2 Кб
1// Copyright 2016 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// This file encapsulates some of the odd characteristics of the
6// s390x instruction set, to minimize its interaction
7// with the core of the assembler.
8
9package arch
10
11import (
12"github.com/twitchyliquid64/golang-asm/obj/s390x"
13)
14
15func jumpS390x(word string) bool {
16switch word {
17case "BRC",
18"BC",
19"BCL",
20"BEQ",
21"BGE",
22"BGT",
23"BL",
24"BLE",
25"BLEU",
26"BLT",
27"BLTU",
28"BNE",
29"BR",
30"BVC",
31"BVS",
32"BRCT",
33"BRCTG",
34"CMPBEQ",
35"CMPBGE",
36"CMPBGT",
37"CMPBLE",
38"CMPBLT",
39"CMPBNE",
40"CMPUBEQ",
41"CMPUBGE",
42"CMPUBGT",
43"CMPUBLE",
44"CMPUBLT",
45"CMPUBNE",
46"CRJ",
47"CGRJ",
48"CLRJ",
49"CLGRJ",
50"CIJ",
51"CGIJ",
52"CLIJ",
53"CLGIJ",
54"CALL",
55"JMP":
56return true
57}
58return false
59}
60
61func s390xRegisterNumber(name string, n int16) (int16, bool) {
62switch name {
63case "AR":
64if 0 <= n && n <= 15 {
65return s390x.REG_AR0 + n, true
66}
67case "F":
68if 0 <= n && n <= 15 {
69return s390x.REG_F0 + n, true
70}
71case "R":
72if 0 <= n && n <= 15 {
73return s390x.REG_R0 + n, true
74}
75case "V":
76if 0 <= n && n <= 31 {
77return s390x.REG_V0 + n, true
78}
79}
80return 0, false
81}
82