【发布时间】:2017-07-09 22:32:53
【问题描述】:
我将 llvmlite 与 Pyvex 结合用于我的项目。我在 llvmlite 中定义了一些函数,如下所示:
def int32(val):
return ir.Constant(ir.IntType(32), val)
def put64(putoffset, val):
llvmtmp = builder.gep(regtag, (int32(0), int32(putoffset)), True)
return builder.store(val, llvmtmp)
但是,当我想使用以下代码调用此函数时:
for stmt in irsb.statements:
if isinstance(stmt, pyvex.IRStmt.Put):
putoffset = stmt.offset
put64("t3", putoffset)
我遇到错误:AttributeError: 'int' object has no attribute 'type'
有谁知道我该如何解决这个问题?
【问题讨论】:
-
你的意思是打电话给
put64(putoffset,"t3")吗? -
如果我这样做,那么我会遇到错误:AttributeError: 'str' object has no attribute 'type'
-
您使用的是 python 3 吗? int32() 也不是 python 本机函数,您是在程序中的某处定义它还是导入它?有更多的代码可以使用会很有帮助。
-
我的python版本是2.7.9。是的,函数是 :def int32(val): return ir.Constant(ir.IntType(32), val)
-
感谢您发布更多代码,但现在
ir是什么?