... | @@ -160,7 +160,7 @@ cnt、addr、pc、bytecode、value_hi、value_lo、acc_hi、acc_lo、is_high都 |
... | @@ -160,7 +160,7 @@ cnt、addr、pc、bytecode、value_hi、value_lo、acc_hi、acc_lo、is_high都 |
|
|
|
|
|
cnt !=0, acc_hi=0,acc_lo=0
|
|
cnt !=0, acc_hi=0,acc_lo=0
|
|
|
|
|
|
当前的value_lo等于Rotation(cur_cnt)的value_lo,value_hi同理,即value_lo和value_hi应等于最终计算出的value_lo、value_hi(PUSH的最后一个byte)
|
|
value_hi和value_lo由下一行进行约束,即当cnt_prev!=0时,value_hi、value_lo都和上一行相等,以此类推则PUSH指令的所有的row的value_hi和value_lo都会等于PUSH的最后一个byte的value_hi和value_lo(PUSH的最后一个byte的value_hi和value_lo是我们想要的最终的value_hi和value_lo)
|
|
|
|
|
|
**cnt_prev != 0**
|
|
**cnt_prev != 0**
|
|
|
|
|
... | @@ -178,14 +178,12 @@ cnt_prev !=0 ----> `acc_hi_prev + is_high*(acc_hi_prev*255 + bytecode) - acc_hi_ |
... | @@ -178,14 +178,12 @@ cnt_prev !=0 ----> `acc_hi_prev + is_high*(acc_hi_prev*255 + bytecode) - acc_hi_ |
|
|
|
|
|
cnt_prev !=0 ----> `acc_lo_cur - acc_lo_prev - (1-is_high) *(acc_lo_prev*255 + bytecode)=0` (约束acc_lo,当cnt < 16, 即high=0时,acc_lo_cur=acc_lo_prev*256 + bytecode)
|
|
cnt_prev !=0 ----> `acc_lo_cur - acc_lo_prev - (1-is_high) *(acc_lo_prev*255 + bytecode)=0` (约束acc_lo,当cnt < 16, 即high=0时,acc_lo_cur=acc_lo_prev*256 + bytecode)
|
|
|
|
|
|
当前的value_lo等于Rotation(cur_cnt)的value_lo,value_hi同理,即value_lo和value_hi应等于最终计算出的value_lo、value_hi(PUSH的最后一个byte)
|
|
cnt_prev != 0 ----> value_hi_prev - value_hi_cur=0, value_lo_prev-value_lo_cur=0
|
|
|
|
|
|
**PUSH的最后一个byte:**
|
|
**PUSH的最后一个byte:**
|
|
|
|
|
|
cnt_prev!=0, cnt=0,value_hi=acc_hi, value_lo=acc_lo
|
|
cnt_prev!=0, cnt=0,value_hi=acc_hi, value_lo=acc_lo
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Lookup约束
|
|
## Lookup约束
|
|
|
|
|
|
每一个byte都应该在fixed电路中Lookup到,即每一个字节大小都应该在0~255范围内
|
|
每一个byte都应该在fixed电路中Lookup到,即每一个字节大小都应该在0~255范围内
|
... | | ... | |