Soliditas - Majelis

Solidity menyediakan opsi untuk menggunakan bahasa assembly untuk menulis perakitan inline dalam kode sumber Solidity. Kita juga dapat menulis kode assembly mandiri yang kemudian diubah menjadi bytecode. Perakitan Mandiri adalah bahasa perantara untuk kompiler Soliditas dan itu mengubah kode Soliditas menjadi Majelis Mandiri dan kemudian menjadi kode byte. Kita dapat menggunakan bahasa yang sama dengan yang digunakan dalam Rakitan Inline untuk menulis kode dalam rakitan Standalone.

Majelis Inline

Kode perakitan sebaris dapat disisipkan dalam basis kode Soliditas untuk memiliki kontrol yang lebih halus atas EVM dan digunakan terutama saat menulis fungsi perpustakaan.

Kode perakitan tertulis di bawah assembly { ... } blok.

Contoh

Coba kode berikut untuk memahami bagaimana Perpustakaan bekerja di 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);
   }
}

Jalankan program di atas menggunakan langkah-langkah yang disediakan di bab Aplikasi Solidity First .

Note - Pilih Uji dari dropdown sebelum mengklik tombol terapkan.

Keluaran

0: uint256: 15