2
在Python Z3中,我有一個字節數組,並且可以使用Select讀取像下面那樣的1個字節。Z3:如何從8位數組中選擇4個字節?
MI = BitVecSort(32)
MV = BitVecSort(8)
Mem = Array('Mem', MI, MV)
pmt = BitVec('pmt', 32)
pmt2 = BitVec('pmt2', 8)
g = True
g = And(g, pmt2 == Select(Mem, pmt))
到目前爲止,這是可以的。但是,現在我想從Mem數組中讀取4個字節,如下所示。
t3 = BitVec('t3', 32)
g = And(g, t3 == Select(Mem, pmt))
事實證明這是錯誤的,因爲t3是32位而不是8位,而Mem是8位數組。
問題是:如何在上例中使用Select讀出4個字節,但不是1個字節?
我想我可以創建一個新的函數來讀出4個字節,可以說Select4(),但我不知道如何在Z3 python中創建一個函數。
非常感謝!
獅子座,非常感謝。但是,我想你忘了提到你在上面的代碼中假設了一點點 - edian? – user311703 2013-04-10 15:18:14
好點。是的,我假設小端。 – 2013-04-10 19:49:19