我正在尝试使用x86
公式来模拟z3
汇编代码。目前,我被困在模拟setnz
操作码的语义。
setnz
的语义定义为
checking the value of CPU flag `ZF`, and if it is equal to 1, then set a register byte as 1, otherwise set it as 0.
例如,可以用这种方式模拟上述过程:
python
>>> from z3 import *
>>> a = BitVecVal(1, 1)
>>> c = (a == 1)
>>> set_register("al", c)
但是,请注意c
的类型是BoolRef
,我想将al
的值设置为8位长BitVecVal
}。
所以这是我的问题:
set
操作码的最佳做法?BoolRef
翻译成8位长的BitVecVal
才能设置寄存器?答案 0 :(得分:1)
您可以使用If:
some text some text some text New paragraph text Another new paragraph