Solidity
如何在 Solidity 或 Yul 中讀取目前程序計數器(PC)?
我正在閱讀文件中有關EVM 方言的資訊,並看到了這一點:
我去Remix試了一下:
function read_pc() external view returns (uint256 result) { assembly { result := pc() } }
但是我收到了這個錯誤:
語法錯誤。PC 指令是低級 EVM 功能。因為那台電腦在嚴格的組裝中是不允許的。
如果這不起作用,是否有另一種方法可以讀取 Solidity 或 Yul 中的目前程序計數器(PC)?
PC
Solidity 0.7 中刪除了直接在 Solidity 中使用操作碼的功能。但是,您PC
將來可能可以通過verbatim
內置的程序集再次使用。目前,您只能verbatim
在以 yul 編寫的合約中使用。如果 Solidity 團隊決定公開verbatim
普通的 Solidity 合約,它將允許您將任意字節碼注入到您的合約中,以獲得PC
如下資訊:function read_pc() public view returns (uint256 result) { assembly { result := verbatim_0i_1o(hex"58") } }