上篇我们详细分析了智能合约反汇编后的代码内容,包括多个反汇编指令的含义,数据在栈中的存储方式,并通过上下文关联关系梳理代码逻辑。本篇我们将继续分析上篇遗留的反汇编代码,通过上篇学习我们已对反汇编指令在栈和内存存储的有了一定了解,该篇我们将重点来分析反汇编指令表示的代码逻辑。
合约源代码
pragma solidity ^0.4.24;
contract Tee {
uint256 private c;
function a() public returns (uint256) { self(2); }
function b() public { c++; }
function self(uint n) internal returns (uint256) {
if (n <= 1) { return 1; }
return n * self(n - 1);
}
}
上篇文章中,我们对下图中蓝色框中的内容进行了详细分析,本篇我们分析红色框中的内容以及之后的反汇编指令。