Solidity
將 Solidity 編譯為與原始碼保持對應的程序集
我想編譯一個用 Solidity 編寫的合約(甚至只是與單個方法相關的部分)來研究它並了解我是否可以優化它。我已經設法將字節碼作為二進製或其程序集表示形式使用
solc
,但我更願意將原始原始碼保留在程序集中,如註釋、每行一行,類似於gcc -S
.此外,我無法理解編譯器在
solc
編譯過程中是否使用 Yul 語言作為 Solidity 和程序集之間的中間表示,如果是,我該如何查看這種表示?
可能,您將獲得的最接近的是使用
--asm
來自 solc 的輸出。使用 solc 0.8,您可以獲得中間的 Yul 表示
--ir
。命令
solc -o build --asm --ir MetaCoin.sol
應該在 build 目錄中生成 MetaCoin.evm 和 MetaCoin.yul 文件。
如果您想手動優化
solc --asm
輸出,您可以使用我的 EVM 彙編器:) https://github.com/RafaelSalguero/evm-assembler它與
solc --asm
輸出兼容