Sağlamlık - Montaj
Solidity, Solidity kaynak kodu içinde satır içi montajı yazmak için montaj dilini kullanma seçeneği sunar. Ayrıca, daha sonra bayt koduna dönüştürülebilecek bağımsız bir montaj kodu da yazabiliriz. Bağımsız Derleme, bir Solidity derleyicisi için bir ara dildir ve Solidity kodunu Tek Başına Bir Derlemeye ve ardından bayt koduna dönüştürür. Bağımsız bir derlemede kod yazmak için Satır İçi Derlemede kullanılanla aynı dili kullanabiliriz.
Satır İçi Montaj
Satır içi montaj kodu, EVM üzerinde daha ince taneli kontrole sahip olmak için Solidity kod tabanı içinde serpiştirilebilir ve özellikle kütüphane fonksiyonlarını yazarken kullanılır.
Bir montaj kodu yazılır assembly { ... } blok.
Misal
Solidity'de bir Kitaplığın nasıl çalıştığını anlamak için aşağıdaki kodu deneyin.
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 bölümünde verilen adımları kullanarak yukarıdaki programı çalıştırın .
Note - Dağıt düğmesine tıklamadan önce açılır menüden Test'i seçin.
Çıktı
0: uint256: 15