本文整理匯總了Golang中code/google/com/p/rsc/c2go/liblink.Prog.Ctxt方法的典型用法代碼示例。如果您正苦於以下問題:Golang Prog.Ctxt方法的具體用法?Golang Prog.Ctxt怎麽用?Golang Prog.Ctxt使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類code/google/com/p/rsc/c2go/liblink.Prog
的用法示例。
在下文中一共展示了Prog.Ctxt方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: softfloat
func softfloat(ctxt *liblink.Link, cursym *liblink.LSym) {
var p *liblink.Prog
var next *liblink.Prog
var symsfloat *liblink.LSym
var wasfloat int
if ctxt.Goarm > 5 {
return
}
symsfloat = liblink.Linklookup(ctxt, "_sfloat", 0)
wasfloat = 0
for p = cursym.Text; p != nil; p = p.Link {
if p.Pcond != nil {
p.Pcond.Mark |= LABEL
}
}
for p = cursym.Text; p != nil; p = p.Link {
switch p.As {
case AMOVW:
if p.To.Typ == D_FREG || p.From.Typ == D_FREG {
goto soft
}
goto notsoft
case AMOVWD,
AMOVWF,
AMOVDW,
AMOVFW,
AMOVFD,
AMOVDF,
AMOVF,
AMOVD,
ACMPF,
ACMPD,
AADDF,
AADDD,
ASUBF,
ASUBD,
AMULF,
AMULD,
ADIVF,
ADIVD,
ASQRTF,
ASQRTD,
AABSF,
AABSD:
goto soft
default:
goto notsoft
}
soft:
if wasfloat == 0 || (p.Mark&LABEL != 0) {
next = ctxt.Prg()
*next = *p
// BL _sfloat(SB)
*p = zprg_obj5
p.Ctxt = ctxt
p.Link = next
p.As = ABL
p.To.Typ = D_BRANCH
p.To.Sym = symsfloat
p.Lineno = next.Lineno
p = next
wasfloat = 1
}
continue
notsoft:
wasfloat = 0
}
}