견고성-조립
Solidity는 Solidity 소스 코드 내에서 인라인 어셈블리를 작성하기 위해 어셈블리 언어를 사용하는 옵션을 제공합니다. 또한 독립형 어셈블리 코드를 작성하여 바이트 코드로 변환 할 수도 있습니다. Standalone Assembly는 Solidity 컴파일러의 중간 언어이며 Solidity 코드를 Standalone Assembly로 변환 한 다음 바이트 코드로 변환합니다. 인라인 어셈블리에서 사용되는 것과 동일한 언어를 사용하여 독립 실행 형 어셈블리에서 코드를 작성할 수 있습니다.
인라인 어셈블리
인라인 어셈블리 코드는 Solidity 코드베이스 내에서 인터리브되어 EVM을보다 세밀하게 제어 할 수 있으며 특히 라이브러리 함수를 작성하는 동안 사용됩니다.
어셈블리 코드는 assembly { ... } 블록.
예
Solidity에서 라이브러리가 작동하는 방식을 이해하려면 다음 코드를 시도하십시오.
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 First Application 장에 제공된 단계를 사용하여 위 프로그램을 실행하십시오 .
Note − 배포 버튼을 클릭하기 전에 드롭 다운에서 테스트를 선택합니다.
산출
0: uint256: 15