特性——内联汇编

Seven 2022-02-17 17:14:57
Categories: > Tags:

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

内联汇编

使用内联汇编,可以在Solidity源程序中嵌入汇编代码,对EVM有更细粒度的控制,在编写库函数时很有用。

汇编代码嵌入使用:

1
assembly { ... } 

示例

尝试下面的代码,来理解汇编是怎么使用的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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);
}
}

附言

参考文章