Festigkeit - Montage
Solidity bietet eine Option zur Verwendung der Assemblersprache zum Schreiben von Inline-Assemblierungen im Solidity-Quellcode. Wir können auch einen eigenständigen Assemblycode schreiben, der dann in Bytecode konvertiert wird. Standalone Assembly ist eine Zwischensprache für einen Solidity-Compiler und konvertiert den Solidity-Code in eine Standalone-Assembly und anschließend in Bytecode. Wir können dieselbe Sprache verwenden, die in Inline Assembly verwendet wird, um Code in eine eigenständige Assembly zu schreiben.
Inline-Montage
Inline-Assembler-Code kann innerhalb der Solidity-Codebasis verschachtelt werden, um eine genauere Kontrolle über EVM zu erhalten. Er wird insbesondere beim Schreiben der Bibliotheksfunktionen verwendet.
Ein Assembler-Code wird unter geschrieben assembly { ... } Block.
Beispiel
Versuchen Sie den folgenden Code, um zu verstehen, wie eine Bibliothek in Solidity funktioniert.
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);
}
}
Führen Sie das obige Programm mit den im Kapitel Solidity First Application beschriebenen Schritten aus .
Note - Wählen Sie Test aus der Dropdown-Liste, bevor Sie auf die Schaltfläche Bereitstellen klicken.
Ausgabe
0: uint256: 15