fallthrough
default:
- p.errorf("wrong number of arguments to %s instruction", obj.Aconv(op))
+ p.errorf("wrong number of arguments to %s instruction", op)
return
}
switch {
// asmInstruction assembles an instruction.
// MOVW R9, (R10)
func (p *Parser) asmInstruction(op obj.As, cond string, a []obj.Addr) {
- // fmt.Printf("%s %+v\n", obj.Aconv(op), a)
+ // fmt.Printf("%s %+v\n", op, a)
prog := &obj.Prog{
Ctxt: p.ctxt,
Lineno: p.histLineNum,
prog.To = a[1]
break
}
- p.errorf("unrecognized addressing for %s", obj.Aconv(op))
+ p.errorf("unrecognized addressing for %s", op)
return
}
if arch.IsARMFloatCmp(op) {
// Catch missing operand here, because we store immediate as part of From3, and can't distinguish
// missing operand from legal value 0 in obj/x86/asm6.
if arch.IsAMD4OP(op) {
- p.errorf("4 operands required, but only 3 are provided for %s instruction", obj.Aconv(op))
+ p.errorf("4 operands required, but only 3 are provided for %s instruction", op)
}
prog.From = a[0]
prog.From3 = newAddr(a[1])
prog.From = a[0]
prog.To = a[1]
if a[2].Type != obj.TYPE_REG {
- p.errorf("invalid addressing modes for third operand to %s instruction, must be register", obj.Aconv(op))
+ p.errorf("invalid addressing modes for third operand to %s instruction, must be register", op)
return
}
prog.RegTo2 = a[2].Reg
prog.From3 = newAddr(a[1])
prog.To = a[2]
default:
- p.errorf("invalid addressing modes for %s instruction", obj.Aconv(op))
+ p.errorf("invalid addressing modes for %s instruction", op)
return
}
case sys.S390X:
prog.From = a[1]
prog.From3 = newAddr(a[2])
if a[0].Type != obj.TYPE_CONST {
- p.errorf("first operand must be an immediate in %s instruction", obj.Aconv(op))
+ p.errorf("first operand must be an immediate in %s instruction", op)
}
if prog.From3.Type != obj.TYPE_REG {
- p.errorf("third operand must be a register in %s instruction", obj.Aconv(op))
+ p.errorf("third operand must be a register in %s instruction", op)
}
prog.From3.Offset = int64(p.getImmediate(prog, op, &a[0]))
prog.To = a[3]
prog.To = a[3]
break
}
- p.errorf("can't handle %s instruction with 4 operands", obj.Aconv(op))
+ p.errorf("can't handle %s instruction with 4 operands", op)
return
case 5:
if p.arch.Family == sys.PPC64 && arch.IsPPC64RLD(op) {
prog.To = a[4]
break
}
- p.errorf("can't handle %s instruction with 5 operands", obj.Aconv(op))
+ p.errorf("can't handle %s instruction with 5 operands", op)
return
case 6:
if p.arch.Family == sys.ARM && arch.IsARMMRC(op) {
}
fallthrough
default:
- p.errorf("can't handle %s instruction with %d operands", obj.Aconv(op), len(a))
+ p.errorf("can't handle %s instruction with %d operands", op, len(a))
return
}
// getConstant checks that addr represents a plain constant and returns its value.
func (p *Parser) getConstant(prog *obj.Prog, op obj.As, addr *obj.Addr) int64 {
if addr.Type != obj.TYPE_MEM || addr.Name != 0 || addr.Reg != 0 || addr.Index != 0 {
- p.errorf("%s: expected integer constant; found %s", obj.Aconv(op), obj.Dconv(prog, addr))
+ p.errorf("%s: expected integer constant; found %s", op, obj.Dconv(prog, addr))
}
return addr.Offset
}
// getImmediate checks that addr represents an immediate constant and returns its value.
func (p *Parser) getImmediate(prog *obj.Prog, op obj.As, addr *obj.Addr) int64 {
if addr.Type != obj.TYPE_CONST || addr.Name != 0 || addr.Reg != 0 || addr.Index != 0 {
- p.errorf("%s: expected immediate constant; found %s", obj.Aconv(op), obj.Dconv(prog, addr))
+ p.errorf("%s: expected immediate constant; found %s", op, obj.Dconv(prog, addr))
}
return addr.Offset
}
// getRegister checks that addr represents a register and returns its value.
func (p *Parser) getRegister(prog *obj.Prog, op obj.As, addr *obj.Addr) int16 {
if addr.Type != obj.TYPE_REG || addr.Offset != 0 || addr.Name != 0 || addr.Index != 0 {
- p.errorf("%s: expected register; found %s", obj.Aconv(op), obj.Dconv(prog, addr))
+ p.errorf("%s: expected register; found %s", op, obj.Dconv(prog, addr))
}
return addr.Reg
}
}
if gc.Debug['P'] != 0 {
- fmt.Printf(" => %v\n", obj.Aconv(p.As))
+ fmt.Printf(" => %v\n", p.As)
}
return true
}
func copyu(p *obj.Prog, v *obj.Addr, s *obj.Addr) int {
switch p.As {
default:
- fmt.Printf("copyu: can't find %v\n", obj.Aconv(p.As))
+ fmt.Printf("copyu: can't find %v\n", p.As)
return 2
case arm.AMOVM:
continue
}
if gc.Debug['P'] != 0 {
- fmt.Printf("encoding $%d directly into %v in:\n%v\n%v\n", p.From.Offset, obj.Aconv(p1.As), p, p1)
+ fmt.Printf("encoding $%d directly into %v in:\n%v\n%v\n", p.From.Offset, p1.As, p, p1)
}
p1.From.Type = obj.TYPE_CONST
p1.From = p.From
switch p.As {
default:
- fmt.Printf("copyu: can't find %v\n", obj.Aconv(p.As))
+ fmt.Printf("copyu: can't find %v\n", p.As)
return 2
case obj.ANOP, /* read p->from, write p->to */
switch p.As {
default:
- fmt.Printf("copyu: can't find %v\n", obj.Aconv(p.As))
+ fmt.Printf("copyu: can't find %v\n", p.As)
return 2
case obj.ANOP, /* read p->from, write p->to */
switch p.As {
default:
- fmt.Printf("copyu: can't find %v\n", obj.Aconv(p.As))
+ fmt.Printf("copyu: can't find %v\n", p.As)
return 2
case obj.ANOP, /* read p->from, write p->to */
return i
}
}
- gc.Fatalf("as2variant: instruction %v is not a variant of itself", obj.Aconv(as&obj.AMask))
+ gc.Fatalf("as2variant: instruction %v is not a variant of itself", as&obj.AMask)
return 0
}
switch p.As {
default:
- fmt.Printf("copyu: can't find %v\n", obj.Aconv(p.As))
+ fmt.Printf("copyu: can't find %v\n", p.As)
return _ReadWriteSame
case // read p.From, write p.To
}
if false { /*debug['O']*/
- fmt.Printf("oplook %v %v %v %v\n", obj.Aconv(p.As), DRconv(a1), DRconv(a2), DRconv(a3))
+ fmt.Printf("oplook %v %v %v %v\n", p.As, DRconv(a1), DRconv(a2), DRconv(a3))
fmt.Printf("\t\t%d %d\n", p.From.Type, p.To.Type)
}
switch r {
default:
- ctxt.Diag("unknown op in build: %v", obj.Aconv(r))
+ ctxt.Diag("unknown op in build: %v", r)
log.Fatalf("bad code")
case AADD:
return 0xe<<28 | 0x5<<25
}
- ctxt.Diag("bad bra %v", obj.Aconv(a))
+ ctxt.Diag("bad bra %v", a)
prasm(ctxt.Curp)
return 0
}
switch a {
default:
- ctxt.Diag("bad fst %v", obj.Aconv(a))
+ ctxt.Diag("bad fst %v", a)
fallthrough
case AMOVD:
}
if false {
- fmt.Printf("oplook %v %d %d %d\n", obj.Aconv(p.As), a1, a2, a3)
+ fmt.Printf("oplook %v %d %d %d\n", p.As, a1, a2, a3)
fmt.Printf("\t\t%d %d\n", p.From.Type, p.To.Type)
}
oprangeset(r, t)
switch r {
default:
- ctxt.Diag("unknown op in build: %v", obj.Aconv(r))
+ ctxt.Diag("unknown op in build: %v", r)
log.Fatalf("bad code")
case AADD:
s := movesize(o.as)
if s < 0 {
- ctxt.Diag("unexpected long move, op %v tab %v\n%v", obj.Aconv(p.As), obj.Aconv(o.as), p)
+ ctxt.Diag("unexpected long move, op %v tab %v\n%v", p.As, o.as, p)
}
v := int32(regoff(ctxt, &p.To))
if v < 0 {
s := movesize(o.as)
if s < 0 {
- ctxt.Diag("unexpected long move, op %v tab %v\n%v", obj.Aconv(p.As), obj.Aconv(o.as), p)
+ ctxt.Diag("unexpected long move, op %v tab %v\n%v", p.As, o.as, p)
}
v := int32(regoff(ctxt, &p.From))
if v < 0 {
o1 = opbfm(ctxt, AUBFMW, 0, 15, rf, rt)
default:
- ctxt.Diag("bad sxt %v", obj.Aconv(as))
+ ctxt.Diag("bad sxt %v", as)
break
}
return FPOP1S(0, 0, 3, 5)
}
- ctxt.Diag("bad rrr %d %v", a, obj.Aconv(a))
+ ctxt.Diag("bad rrr %d %v", a, a)
prasm(ctxt.Curp)
return 0
}
return SYSOP(0, 0, 3, 2, 0, 0, 0x1F)
}
- ctxt.Diag("bad irr %v", obj.Aconv(a))
+ ctxt.Diag("bad irr %v", a)
prasm(ctxt.Curp)
return 0
}
return S32 | 1<<30 | 1<<29 | 0x0b<<24 | 0<<22 | 1<<21 | LSL0_32
}
- ctxt.Diag("bad opxrrr %v\n%v", obj.Aconv(a), ctxt.Curp)
+ ctxt.Diag("bad opxrrr %v\n%v", a, ctxt.Curp)
return 0
}
return SYSOP(0, 0, 3, 3, 0, 2, 0x1F)
}
- ctxt.Diag("bad imm %v", obj.Aconv(a))
+ ctxt.Diag("bad imm %v", a)
prasm(ctxt.Curp)
return 0
}
return 1<<31 | 5<<26
}
- ctxt.Diag("bad bra %v", obj.Aconv(a))
+ ctxt.Diag("bad bra %v", a)
prasm(ctxt.Curp)
return 0
}
return OPBLR(2) /* RET */
}
- ctxt.Diag("bad brr %v", obj.Aconv(a))
+ ctxt.Diag("bad brr %v", a)
prasm(ctxt.Curp)
return 0
}
return SYSHINT(5)
}
- ctxt.Diag("bad op0 %v", obj.Aconv(a))
+ ctxt.Diag("bad op0 %v", a)
prasm(ctxt.Curp)
return 0
}
return S32 | 0<<30 | 5<<27 | 0<<26 | 0<<23 | 1<<22
}
- ctxt.Diag("bad opload %v\n%v", obj.Aconv(a), ctxt.Curp)
+ ctxt.Diag("bad opload %v\n%v", a, ctxt.Curp)
return 0
}
return S32 | 0<<30 | 5<<27 | 0<<26 | 0<<23 | 1<<22
}
- ctxt.Diag("bad opstore %v\n%v", obj.Aconv(a), ctxt.Curp)
+ ctxt.Diag("bad opstore %v\n%v", a, ctxt.Curp)
return 0
}
return LDSTR12U(3, 1, 1)
}
- ctxt.Diag("bad opldr12 %v\n%v", obj.Aconv(a), ctxt.Curp)
+ ctxt.Diag("bad opldr12 %v\n%v", a, ctxt.Curp)
return 0
}
return LDSTR9S(3, 1, 1)
}
- ctxt.Diag("bad opldr9 %v\n%v", obj.Aconv(a), ctxt.Curp)
+ ctxt.Diag("bad opldr9 %v\n%v", a, ctxt.Curp)
return 0
}
return 0<<30 | 7<<27 | 0<<26 | 0<<24 | 1<<22
}
- ctxt.Diag("bad opldr %v\n%v", obj.Aconv(a), ctxt.Curp)
+ ctxt.Diag("bad opldr %v\n%v", a, ctxt.Curp)
return 0
}
}
}
- ctxt.Diag("illegal combination %v %v %v %v", obj.Aconv(p.As), DRconv(a1), DRconv(a2), DRconv(a3))
+ ctxt.Diag("illegal combination %v %v %v %v", p.As, DRconv(a1), DRconv(a2), DRconv(a3))
prasm(p)
if ops == nil {
ops = optab
switch r {
default:
- ctxt.Diag("unknown op in build: %v", obj.Aconv(r))
+ ctxt.Diag("unknown op in build: %v", r)
log.Fatalf("bad code")
case AABSF:
}
if a < 0 {
- ctxt.Diag("bad rrr opcode -%v", obj.Aconv(-a))
+ ctxt.Diag("bad rrr opcode -%v", -a)
} else {
- ctxt.Diag("bad rrr opcode %v", obj.Aconv(a))
+ ctxt.Diag("bad rrr opcode %v", a)
}
return 0
}
}
if a < 0 {
- ctxt.Diag("bad irr opcode -%v", obj.Aconv(-a))
+ ctxt.Diag("bad irr opcode -%v", -a)
} else {
- ctxt.Diag("bad irr opcode %v", obj.Aconv(a))
+ ctxt.Diag("bad irr opcode %v", a)
}
return 0
}
}
}
- ctxt.Diag("illegal combination %v %v %v %v %v", obj.Aconv(p.As), DRconv(a1), DRconv(a2), DRconv(a3), DRconv(a4))
+ ctxt.Diag("illegal combination %v %v %v %v %v", p.As, DRconv(a1), DRconv(a2), DRconv(a3), DRconv(a4))
prasm(p)
if ops == nil {
ops = optab
switch r {
default:
- ctxt.Diag("unknown op in build: %v", obj.Aconv(r))
- log.Fatalf("instruction missing from switch in asm9.go:buildop: %v", obj.Aconv(r))
+ ctxt.Diag("unknown op in build: %v", r)
+ log.Fatalf("instruction missing from switch in asm9.go:buildop: %v", r)
case ADCBF: /* unary indexed: op (b+a); op (b) */
opset(ADCBI, r0)
return OPVCC(31, 316, 0, 1)
}
- ctxt.Diag("bad r/r opcode %v", obj.Aconv(a))
+ ctxt.Diag("bad r/r opcode %v", a)
return 0
}
return OPVCC(27, 0, 0, 0) /* XORIU */
}
- ctxt.Diag("bad opcode i/r %v", obj.Aconv(a))
+ ctxt.Diag("bad opcode i/r %v", a)
return 0
}
return OPVCC(46, 0, 0, 0) /* lmw */
}
- ctxt.Diag("bad load opcode %v", obj.Aconv(a))
+ ctxt.Diag("bad load opcode %v", a)
return 0
}
return OPVCC(31, 53, 0, 0) /* ldux */
}
- ctxt.Diag("bad loadx opcode %v", obj.Aconv(a))
+ ctxt.Diag("bad loadx opcode %v", a)
return 0
}
return OPVCC(62, 0, 0, 1) /* stdu */
}
- ctxt.Diag("unknown store opcode %v", obj.Aconv(a))
+ ctxt.Diag("unknown store opcode %v", a)
return 0
}
return OPVCC(31, 181, 0, 0) /* stdux */
}
- ctxt.Diag("unknown storex opcode %v", obj.Aconv(a))
+ ctxt.Diag("unknown storex opcode %v", a)
return 0
}
}
// cannot find a case; abort
- ctxt.Diag("illegal combination %v %v %v %v %v\n", obj.Aconv(p.As), DRconv(a1), DRconv(a2), DRconv(a3), DRconv(a4))
+ ctxt.Diag("illegal combination %v %v %v %v %v\n", p.As, DRconv(a1), DRconv(a2), DRconv(a3), DRconv(a4))
ctxt.Diag("prog: %v\n", p)
return nil
}
return op_LRVH
}
- ctxt.Diag("unknown store opcode %v", obj.Aconv(a))
+ ctxt.Diag("unknown store opcode %v", a)
return 0
}
return op_STRVH
}
- ctxt.Diag("unknown store opcode %v", obj.Aconv(a))
+ ctxt.Diag("unknown store opcode %v", a)
return 0
}
case ACEBR:
return op_CEBR
}
- ctxt.Diag("unknown rre opcode %v", obj.Aconv(a))
+ ctxt.Diag("unknown rre opcode %v", a)
return 0
}
case ACMPWU:
return op_CLR
}
- ctxt.Diag("unknown rr opcode %v", obj.Aconv(a))
+ ctxt.Diag("unknown rr opcode %v", a)
return 0
}
case ACMPWU:
return op_CLFI
}
- ctxt.Diag("unknown ril opcode %v", obj.Aconv(a))
+ ctxt.Diag("unknown ril opcode %v", a)
return 0
}
var buf bytes.Buffer
- fmt.Fprintf(&buf, "%.5d (%v)\t%v%s", p.Pc, p.Line(), Aconv(p.As), sc)
+ fmt.Fprintf(&buf, "%.5d (%v)\t%v%s", p.Pc, p.Line(), p.As, sc)
sep := "\t"
quadOpAmd64 := p.RegTo2 == -1
if quadOpAmd64 {
aSpace = append(aSpace, opSet{lo, Anames})
}
-func Aconv(a As) string {
+func (a As) String() string {
if 0 <= a && int(a) < len(Anames) {
return Anames[a]
}
for i := 1; optab[i].as != 0; i++ {
c := optab[i].as
if opindex[c&obj.AMask] != nil {
- log.Fatalf("phase error in optab: %d (%v)", i, obj.Aconv(c))
+ log.Fatalf("phase error in optab: %d (%v)", i, c)
}
opindex[c&obj.AMask] = &optab[i]
}
return AJOS
}
- log.Fatalf("unknown relation: %s", obj.Aconv(a))
+ log.Fatalf("unknown relation: %s", a)
return 0
}