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