added some methods to llvm.mc.Operand
methods that describe what type of operand it is
This commit is contained in:
parent
083586464b
commit
8de5c3faff
1 changed files with 39 additions and 6 deletions
|
|
@ -26,15 +26,15 @@ class Operand(object):
|
|||
|
||||
def __str__(self):
|
||||
s = "invalid"
|
||||
if self.op.isReg():
|
||||
if self.is_reg():
|
||||
s = "reg(%s)" % (self.reg_name())
|
||||
elif self.op.isImm():
|
||||
elif self.is_imm():
|
||||
s = "imm(0x%02x)" % (self.op.getImm())
|
||||
elif self.op.isFPImm():
|
||||
elif self.is_fp_imm():
|
||||
s = "imm(%r)" % (self.op.getFPImm())
|
||||
elif self.op.isExpr():
|
||||
elif self.is_expr():
|
||||
s = "expr(%r)" % (self.op.getExpr().getKind())
|
||||
elif self.op.isInst():
|
||||
elif self.is_inst():
|
||||
s = repr(Instr(self.op.getInst()))
|
||||
|
||||
return s
|
||||
|
|
@ -43,7 +43,7 @@ class Operand(object):
|
|||
return str(self)
|
||||
|
||||
def reg_name(self):
|
||||
if self.op.isReg():
|
||||
if self.is_reg():
|
||||
s = self.tm.reg_info.getName(self.op.getReg())
|
||||
if s.strip() == "":
|
||||
return "?"
|
||||
|
|
@ -52,6 +52,39 @@ class Operand(object):
|
|||
else:
|
||||
return ""
|
||||
|
||||
def is_reg(self):
|
||||
return self.op.isReg()
|
||||
|
||||
def is_imm(self):
|
||||
return self.op.isImm()
|
||||
|
||||
def is_fp_imm(self):
|
||||
return self.op.isFPImm()
|
||||
|
||||
def is_expr(self):
|
||||
return self.op.isExpr()
|
||||
|
||||
def is_inst(self):
|
||||
return self.op.isInst()
|
||||
|
||||
def get_imm(self):
|
||||
if self.is_imm():
|
||||
return self.op.getImm()
|
||||
else:
|
||||
return None
|
||||
|
||||
def get_fp_imm(self):
|
||||
if self.is_fp_imm():
|
||||
return self.op.getFPImm()
|
||||
else:
|
||||
return None
|
||||
|
||||
def get_inst(self):
|
||||
if self.is_inst():
|
||||
return Instr(self.op.getInst())
|
||||
else:
|
||||
return None
|
||||
|
||||
class Instr(object):
|
||||
|
||||
def __init__(self, mcinst, target_machine):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue