... | @@ -57,7 +57,7 @@ operand* 用来存放算术中的参数值,如 a+b=c+overflow 指令中的 a,b |
... | @@ -57,7 +57,7 @@ operand* 用来存放算术中的参数值,如 a+b=c+overflow 指令中的 a,b |
|
- c lo + carry lo \* 2^128 = a lo + b lo
|
|
- c lo + carry lo \* 2^128 = a lo + b lo
|
|
- c hi + carry hi \* 2^128 = a hi + b hi + carry lo
|
|
- c hi + carry hi \* 2^128 = a hi + b hi + carry lo
|
|
|
|
|
|
- Sub (含义:a-b=c,且 a 的 hi lo 被约束为 8 个 16bit 之和)
|
|
- Sub (含义:a-b=c,且 c 的 hi lo 被约束为 8 个 16bit 之和)
|
|
|
|
|
|
- 注:减法,LT,GT 都可以用这个
|
|
- 注:减法,LT,GT 都可以用这个
|
|
- c_lo = u16 sum(rotation cur)
|
|
- c_lo = u16 sum(rotation cur)
|
... | @@ -66,7 +66,7 @@ operand* 用来存放算术中的参数值,如 a+b=c+overflow 指令中的 a,b |
... | @@ -66,7 +66,7 @@ operand* 用来存放算术中的参数值,如 a+b=c+overflow 指令中的 a,b |
|
- carry lo is bool
|
|
- carry lo is bool
|
|
- a_lo + carrry_lo \* 2^128 = b_lo + c_lo
|
|
- a_lo + carrry_lo \* 2^128 = b_lo + c_lo
|
|
- a_hi + carry_hi \* 2^128 - carry_lo= b_hi + c_hi
|
|
- a_hi + carry_hi \* 2^128 - carry_lo= b_hi + c_hi
|
|
- 注意:carry_hi=1 等价于 b>c; carry_hi=0 等价于 b<=c
|
|
- 注意:carry_hi=1 等价于 a<b; carry_hi=0 等价于 a>=b
|
|
|
|
|
|
- Div_Mod (a\*b+c=d 同时约束 c 小于 b)
|
|
- Div_Mod (a\*b+c=d 同时约束 c 小于 b)
|
|
|
|
|
... | | ... | |