Esempio n. 1
0
func (v Target) genInstr(a *allocator, instr ssa.Instruction, blockLabelMap map[*ssa.Block]string) {
	v.wstring("#" + instr.String() + "\n")

	switch instr := instr.(type) {
	case *ssa.Ret:
		v.genRet(a, instr)
	case *ssa.BinOp:
		v.genBinOp(a, instr)
	case *ssa.ICmp:
		v.genICmp(a, instr)
	case *ssa.Br:
		v.genBr(a, instr, blockLabelMap)
	case *ssa.CondBr:
		v.genCondBr(a, instr, blockLabelMap)
	case *ssa.Call:
		v.genCall(a, instr)
	case *ssa.Convert:
		v.genConvert(a, instr)
	case *ssa.GEP:
		v.genGEP(a, instr)
	case *ssa.Load:
		v.genLoad(a, instr)
	case *ssa.Alloc:
		v.genAlloc(a, instr)
	case *ssa.Store:
		v.genStore(a, instr)
	case *ssa.Phi:
		// do nothing
	case *ssa.Unreachable:
		v.wop("hlt")
	default:
		panic("unim")
	}
}