सॉलिडिटी - असेंबली

सॉलिडिटी एसेंबली सोर्स कोड के भीतर इनलाइन असेंबली लिखने के लिए असेंबली लैंग्वेज का उपयोग करने का विकल्प प्रदान करती है। हम एक स्टैंडअलोन असेंबली कोड भी लिख सकते हैं जिसे तब बायटेकोड में बदल दिया जाता है। स्टैंडअलोन असेंबली एक सॉलिडिटी कंपाइलर के लिए एक मध्यवर्ती भाषा है और यह सॉलिडिटी कोड को स्टैंडअलोन असेंबली में और फिर बाइट कोड में परिवर्तित करता है। हम इनलाइन असेंबली में उसी भाषा का उपयोग एक स्टैंडअलोन असेंबली में कोड लिखने के लिए कर सकते हैं।

इनलाइन असेंबली

इनलाइन असेंबली कोड को सॉलिडिटी कोड बेस के भीतर इंटरलेव किया जा सकता है ताकि ईवीएम पर अधिक बारीक-दाने का नियंत्रण हो और विशेष रूप से लाइब्रेरी के कार्यों को लिखते समय इसका उपयोग किया जाता है।

एक विधानसभा कोड के तहत लिखा है assembly { ... } खंड मैथा।

उदाहरण

एक कोड सोलिडिटी में कैसे काम करता है, यह समझने के लिए निम्न कोड का प्रयास करें।

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);
   }
}

सॉलिडिटी फर्स्ट एप्लीकेशन चैप्टर में दिए गए चरणों का उपयोग करके उपरोक्त प्रोग्राम को चलाएं ।

Note - तैनाती बटन पर क्लिक करने से पहले ड्रॉपडाउन से टेस्ट का चयन करें।

उत्पादन

0: uint256: 15