Remix

編譯獨立程序集

  • September 24, 2021

solidity wiki 解釋說獨立組裝也是可能的。但是,我無法編譯它。例如:

{
 mstore(0x40, 0x60) // store the "free memory pointer"
 // function dispatcher
 switch div(calldataload(0), exp(2, 226))
 case 0xb3de648b {
   let r := f(calldataload(4))
   let ret := $allocate(0x20)
   mstore(ret, r)
   return(ret, 0x20)
 }
 default { revert(0, 0) }
 // memory allocator
 function $allocate(size) -> pos {
   pos := mload(0x40)
   mstore(0x40, add(pos, size))
 }
 // the contract function
 function f(x) -> y {
   y := 1
   for { let i := 0 } lt(i, x) { i := add(i, 1) } {
     y := mul(2, y)
   }
 }
}

(取自solidity docs)。

我該如何編譯這個?我很確定我必須在 solc 中添加一些標誌。是否可以在混音中編譯它?

根據this GitHub,有人詢問了有關獨立程序集狀態的以下問題:

這已經實施了嗎?它顯示在文件中,但我看不到它正在實施的其他證據: http ://solidity.readthedocs.io/en/develop/assembly.html?highlight=assembly#standalone-assembly

投稿人對此的回應是

不,這仍在進行中。我不得不承認,文件中有關於它的註釋,但不是太明顯。

這是我得到的與上述問題有關的唯一證據。

引用自:https://ethereum.stackexchange.com/questions/54733