首先需要安装solc和evm
solc: https://github.com/ethereum/solidity/releases
evm: https://geth.ethereum.org/downloads/
编译一个smart contract可以通过指令 solc --bin-runtime filepath来得到bytecode
反汇编bytecode可以通过evm --disasm bytecodeFilePath
反汇编以后的文件如下:

前面的数字就是pc(programmer counter), 以20行的指令为例,0x008d代表21行的JUMPI跳转的pc值是141.
solc还有下面几个非常好用的指令,可以获得合约的ast,asm(汇编码),opcode,bin,abi,函数签名等

本文介绍如何使用solc和evm工具进行智能合约的编译与反汇编。solc用于编译Solidity源代码为字节码,通过特定指令可以获取合约的各种元数据;evm则用来反汇编已编译的字节码,帮助理解其底层执行逻辑。
245





