【发布时间】:2015-09-13 18:29:55
【问题描述】:
我是Z3 的新手。对不起,如果这是一个愚蠢的问题..
我基本上是在尝试在x86-32bit 汇编指令上实现一个简单的符号执行引擎。这是我现在面临的问题:
假设在执行之前,我已经使用BitVec初始化了一些寄存器。
self.eq['%eax'] = BitVec('reg%d' % 1, 32)
self.eq['%ebx'] = BitVec('reg%d' % 2, 32)
self.eq['%ecx'] = BitVec('reg%d' % 3, 32)
self.eq['%edx'] = BitVec('reg%d' % 4, 32)
所以这是我的问题,如何处理一些16-bit 甚至8-bit 寄存器?
我是否可以从 32 位 BitVec 中提取 8-bit 部分,为其分配一些值,然后将其放回原处?我可以在z3 中这样做吗?或者有没有更好的方法..?
我说清楚了吗?非常感谢!
【问题讨论】: