Solidity 汇编(Assembly)代码
与c/c++类似,solability程序中,可以使用EVM汇编语言。
内联汇编
使用内联汇编,可以在Solidity源程序中嵌入汇编代码,对EVM有更细粒度的控制,在编写库函数时很有用。
汇编代码嵌入使用:
示例
尝试下面的代码,来理解汇编是怎么使用的。
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。
输出