Solidity教程

Solidity 汇编(Assembly)代码

与c/c++类似,solability程序中,可以使用EVM汇编语言。

内联汇编

使用内联汇编,可以在Solidity源程序中嵌入汇编代码,对EVM有更细粒度的控制,在编写库函数时很有用。
汇编代码嵌入使用:
assembly { ... } 
示例
尝试下面的代码,来理解汇编是怎么使用的。
pragma solidity ^0.5.0;
library Sum {   
   function sumUsingInlineAssembly(uint[] memory _data) public pure returns (uint o_sum) {
      for (uint i = 0; i < _data.length; ++i) {
         assembly {
            o_sum := add(o_sum, mload(add(add(_data, 0x20), mul(i, 0x20))))
         }
      }
   }
}
contract Test {
   uint[] data;
   constructor() public {
      data.push(1);
      data.push(2);
      data.push(3);
      data.push(4);
      data.push(5);
   }
   function sum() external view returns(uint){      
      return Sum.sumUsingInlineAssembly(data);
   }
}
可以参考Solidity – 第一个程序中的步骤,运行上述程序。
在单击deploy按钮之前,从下拉菜单中选择Test。
输出
0: uint256: 15
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4