... | ... | @@ -6,24 +6,7 @@ |
|
|
|
|
|
具体操作:从栈顶弹出两个值a和b,进行整数加法(mod 2^256),将结果存进栈。
|
|
|
|
|
|
示例具体操作流程如下:
|
|
|
|
|
|
**初始状态**:
|
|
|
|
|
|
- 栈内容:`[a, b]`
|
|
|
- 其中,`a` 和 `b` 是256位整数,`a` 在栈顶,`b` 在栈顶下方。
|
|
|
|
|
|
**操作步骤**:
|
|
|
|
|
|
- **弹出值**:从栈中弹出两个值 `a` 和 `b`。此时栈变为空。
|
|
|
- **计算**:执行加法操作:`result = (a + b) % 2^256`。这个操作确保结果始终保持在256位整数范围内。
|
|
|
- **推入结果**:将计算得到的结果 `result` 推入栈中。
|
|
|
|
|
|
**最终状态**:
|
|
|
|
|
|
- 栈内容:`[result]`
|
|
|
|
|
|
evm中trace示例:
|
|
|
trace示例:
|
|
|
|
|
|
```code
|
|
|
// Example 1
|
... | ... | @@ -41,6 +24,23 @@ ADD |
|
|
|
|
|
由于在evm中`ADD`指令会自动从栈中弹出两个操作数并将结果推入栈中,所以在trace中没有显式的`POP`操作。
|
|
|
|
|
|
示例具体操作流程如下:
|
|
|
|
|
|
**初始状态**:
|
|
|
|
|
|
- 栈内容:`[a, b]`
|
|
|
- 其中,`a` 和 `b` 是256位整数,`a` 在栈顶,`b` 在栈顶下方。
|
|
|
|
|
|
**操作步骤**:
|
|
|
|
|
|
- **弹出值**:从栈中弹出两个值 `a` 和 `b`。此时栈变为空。
|
|
|
- **计算**:执行加法操作:`result = (a + b) % 2^256`。这个操作确保结果始终保持在256位整数范围内。
|
|
|
- **推入结果**:将计算得到的结果 `result` 推入栈中。
|
|
|
|
|
|
**最终状态**:
|
|
|
|
|
|
- 栈内容:`[result]`
|
|
|
|
|
|
### Witness Core Row
|
|
|
|
|
|
core row中的表格设计如下:
|
... | ... | |