Dalvik निष्पादन योग्य निर्देश प्रारूप

यह पृष्ठ दल्विक निष्पादन योग्य प्रारूप और दलविक बाइटकोड द्वारा उपयोग किए जाने वाले निर्देश प्रारूपों को सूचीबद्ध करता है। इसका उपयोग बाइटकोड संदर्भ दस्तावेज़ के संयोजन में किया जाना है।

बिटवाइज विवरण

प्रारूप तालिका में पहला कॉलम प्रारूप के बिटवाइज लेआउट को सूचीबद्ध करता है। इसमें एक या अधिक स्थान-पृथक "शब्द" होते हैं, जिनमें से प्रत्येक एक 16-बिट कोड इकाई का वर्णन करता है। एक शब्द में प्रत्येक वर्ण चार बिट्स का प्रतिनिधित्व करता है, उच्च बिट्स से निम्न तक पढ़ा जाता है, पढ़ने में सहायता के लिए लंबवत सलाखों (" | ") के साथ। " A " से अनुक्रम में अपरकेस अक्षरों का उपयोग प्रारूप के भीतर फ़ील्ड को इंगित करने के लिए किया जाता है (जो तब सिंटैक्स कॉलम द्वारा आगे परिभाषित किया जाता है)। " op " शब्द का प्रयोग प्रारूप के भीतर आठ-बिट ऑपकोड की स्थिति को इंगित करने के लिए किया जाता है। एक स्लैश शून्य (" Ø ") का उपयोग यह इंगित करने के लिए किया जाता है कि सभी बिट्स को संकेतित स्थिति में शून्य होना चाहिए।

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

उदाहरण के लिए, प्रारूप " B|A| op CCCC " इंगित करता है कि प्रारूप में दो 16-बिट कोड इकाइयां हैं। पहले शब्द में निम्न आठ बिट्स में ओपकोड और उच्च आठ बिट्स में चार-बिट मानों की एक जोड़ी होती है; और दूसरे शब्द में एक एकल 16-बिट मान होता है।

प्रारूप आईडी

प्रारूप तालिका में दूसरा कॉलम प्रारूप के लिए संक्षिप्त पहचानकर्ता को इंगित करता है, जिसका उपयोग अन्य दस्तावेजों में और कोड में प्रारूप की पहचान करने के लिए किया जाता है।

अधिकांश प्रारूप आईडी में तीन अक्षर होते हैं, दो अंकों के बाद एक अक्षर। पहला अंक प्रारूप में 16-बिट कोड इकाइयों की संख्या को इंगित करता है। दूसरा अंक रजिस्टरों की अधिकतम संख्या को इंगित करता है जिसमें प्रारूप शामिल है (अधिकतम, क्योंकि कुछ प्रारूप रजिस्टरों की एक चर संख्या को समायोजित कर सकते हैं), विशेष पदनाम " r " के साथ यह दर्शाता है कि रजिस्टरों की एक श्रृंखला एन्कोडेड है। अंतिम अक्षर अर्ध-स्मरणीय रूप से प्रारूप द्वारा एन्कोड किए गए किसी भी अतिरिक्त डेटा के प्रकार को इंगित करता है। उदाहरण के लिए, प्रारूप " 21t " लंबाई दो का है, इसमें एक रजिस्टर संदर्भ है, और इसके अतिरिक्त एक शाखा लक्ष्य भी शामिल है।

सुझाए गए स्थिर लिंकिंग स्वरूपों में एक अतिरिक्त " s " प्रत्यय होता है, जिससे वे कुल चार वर्ण बन जाते हैं। इसी तरह, सुझाए गए "इनलाइन" लिंकिंग प्रारूपों में एक अतिरिक्त " i " प्रत्यय होता है। (इस संदर्भ में, इनलाइन लिंकिंग स्थिर लिंकिंग की तरह है, मशीन के कार्यान्वयन में अधिक प्रत्यक्ष संबंधों को छोड़कर।) अंत में, कुछ ऑडबॉल सुझाए गए प्रारूपों (जैसे, " 20bc ") में डेटा के दो टुकड़े शामिल होते हैं जो दोनों इसके प्रारूप आईडी में दर्शाए जाते हैं। .

टाइपकोड अक्षरों की पूरी सूची इस प्रकार है। ध्यान दें कि प्रारूप के आधार पर कुछ रूपों के अलग-अलग आकार होते हैं:

स्मृति सहायक बिट आकार अर्थ
बी 8 तत्काल हस्ताक्षरित बी yte
सी 16, 32 सी लगातार पूल इंडेक्स
एफ 16 इंटर एफ ऐस स्थिरांक (केवल सांख्यिकीय रूप से जुड़े प्रारूपों में उपयोग किया जाता है)
एच 16 तत्काल हस्ताक्षरित h पर (32- या 64-बिट मान के उच्च-आदेश बिट्स; निम्न-आदेश बिट्स सभी 0 हैं)
मैं 32 तत्काल हस्ताक्षरित i nt, या 32-बिट फ्लोट
मैं 64 तत्काल हस्ताक्षरित एल ओएनजी, या 64-बिट डबल
एम 16 एम एथोड स्थिरांक (केवल स्थिर रूप से जुड़े प्रारूपों में उपयोग किया जाता है)
एन 4 तत्काल हस्ताक्षरित n ibble
एस 16 तत्काल हस्ताक्षरित s hort
टी 8, 16, 32 शाखा टी arget
एक्स 0 कोई अतिरिक्त डेटा नहीं

वाक्य - विन्यास

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

जहां कहीं भी तर्क पहले कॉलम से किसी फ़ील्ड को संदर्भित करता है, उस फ़ील्ड के अक्षर को सिंटैक्स में इंगित किया जाता है, फ़ील्ड के प्रत्येक चार बिट्स के लिए एक बार दोहराया जाता है। उदाहरण के लिए, पहले कॉलम में " BB " लेबल वाले आठ-बिट फ़ील्ड को सिंटैक्स कॉलम में " BB " भी लेबल किया जाएगा।

तर्क जो एक रजिस्टर को नाम देते हैं, उनका फॉर्म " v X " है। उपसर्ग " v " को अधिक सामान्य " r " के बजाय चुना गया था, वास्तव में (गैर-आभासी) आर्किटेक्चर के साथ परस्पर विरोधी से बचने के लिए, जिस पर Dalvik निष्पादन योग्य प्रारूप लागू किया जा सकता है, जो स्वयं अपने रजिस्टरों के लिए उपसर्ग " r " का उपयोग करते हैं। (अर्थात, इस निर्णय से आभासी और वास्तविक दोनों प्रकार के रजिस्टरों के बारे में बिना किसी परिधि के एक साथ बात करना संभव हो जाता है।)

तर्क जो एक शाब्दिक मूल्य को इंगित करते हैं, उनका रूप " #+ X " होता है। कुछ प्रारूप ऐसे शाब्दिक संकेत देते हैं जिनके उच्च-क्रम वाले बिट्स में केवल गैर-शून्य बिट्स होते हैं; इनके लिए, ज़ीरो को सिंटैक्स में स्पष्ट रूप से दर्शाया जाता है, भले ही वे बिटवाइज़ प्रतिनिधित्व में प्रकट न हों।

तर्क जो एक सापेक्ष निर्देश पता ऑफ़सेट इंगित करते हैं, उनके पास " + X " रूप होता है।

तर्क जो एक शाब्दिक स्थिर पूल इंडेक्स को इंगित करते हैं, उनके पास " kind @ X " फॉर्म होता है, जहां " kind " इंगित करता है कि किस निरंतर पूल को संदर्भित किया जा रहा है। इस तरह के प्रारूप का उपयोग करने वाला प्रत्येक ओपकोड स्पष्ट रूप से केवल एक प्रकार के स्थिरांक की अनुमति देता है; पत्राचार का पता लगाने के लिए ओपकोड संदर्भ देखें। निरंतर पूल के प्रकार " string " (स्ट्रिंग पूल इंडेक्स), " type " (टाइप पूल इंडेक्स), " field " (फ़ील्ड पूल इंडेक्स), " meth " (विधि पूल इंडेक्स), और " site " (कॉल साइट इंडेक्स) हैं। )

निरंतर पूल सूचकांकों के प्रतिनिधित्व के समान, ऐसे भी सुझाए गए (वैकल्पिक) रूप हैं जो प्रीलिंक्ड ऑफ़सेट या इंडेक्स को इंगित करते हैं। सुझाए गए प्रीलिंक किए गए मान दो प्रकार के होते हैं: vtable ऑफ़सेट (" vtaboff " के रूप में दर्शाया गया है) और फ़ील्ड ऑफ़सेट (" fieldoff " के रूप में दर्शाया गया है)।

ऐसे मामलों में जहां एक प्रारूप मान स्पष्ट रूप से वाक्य रचना का हिस्सा नहीं है, लेकिन इसके बजाय एक प्रकार चुनता है, प्रत्येक संस्करण को उपसर्ग " [ X = N ] " (उदाहरण के लिए, " [A=2] ") के साथ सूचीबद्ध किया जाता है ताकि पत्राचार को इंगित किया जा सके। .

प्रारूप

प्रारूप पहचान वाक्य - विन्यास उल्लेखनीय Opcodes कवर किया गया
एन/ए 00x N/A अप्रयुक्त ऑपकोड के लिए प्रयुक्त छद्म प्रारूप; ब्रेकपॉइंट ऑपोड के लिए नाममात्र प्रारूप के रूप में उपयोग के लिए सुझाव दिया गया है
| सेशन 10x op
बी|ए| सेशन 12x op वीए, वीबी
11एन op वीए, #+बी
एए| सेशन 11x op वीएए
10t op + एए के लिए जाओ
| सेशन एएएए 20t op + एएएए गोटो/16
एए| सेशन बीबीबीबी 20बीसी op एए, तरह @ बीबीबीबी सांख्यिकीय रूप से निर्धारित सत्यापन त्रुटियों के लिए सुझाया गया प्रारूप; ए त्रुटि का प्रकार है और बी एक प्रकार-उपयुक्त तालिका में एक अनुक्रमणिका है (उदाहरण के लिए कोई ऐसी विधि त्रुटि के लिए विधि संदर्भ)
एए| सेशन बीबीबीबी 22x op वीएए, वीबीबीबीबी
21t op वीएए, +बीबीबीबी
-21 op वीएए, #+बीबीबीबी
21 घंटे op वीएए, #+बीबीबीबी0000
op वीएए, #+बीबीबीबी000000000000
21सी op वीएए, टाइप करें@बीबीबीबी
op वीएए, फील्ड@बीबीबीबी
op वीएए, method_handle@BBBB
op वीएए, प्रोटो@बीबीबीबी
op वीएए, स्ट्रिंग@बीबीबीबी
चेक-कास्ट
कॉन्स्ट-क्लास
कास्ट-विधि-संभाल
कास्ट-विधि-प्रकार
कॉन्स्ट-स्ट्रिंग
एए| ऑप सीसी|बीबी 23x op वीएए, वीबीबी, वीसीसी
22बी op वीएए, वीबीबी, #+सीसी
बी|ए| सेशन सीसीसीसी 22t op वीए, वीबी, +सीसीसीसी
22s op वीए, वीबी, #+सीसीसीसी
22सी op वीए, वीबी, टाइप@सीसीसीसी
op वीए, वीबी, फील्ड@सीसीसीसी
का उदाहरण
22सीएस op वीए, वीबी, फील्डऑफ़@सीसीसीसी प्रारूप 22c . के सांख्यिकीय रूप से जुड़े फ़ील्ड एक्सेस निर्देशों के लिए सुझाए गए प्रारूप
| ऑप एएएए लो एएएए हाय 30t op + एएएएएएएएएए गोटो/32
| सेशन एएएए बीबीबीबी 32x op वीएएएए, वीबीबीबीबी
एए| सेशन बीबीबीबी लो बीबीबीबी हाय 31i op वीएए, #+बीबीबीबीबीबीबीबी
31t op वीएए, +बीबीबीबीबीबीबीबी
31सी op वीएए, स्ट्रिंग@बीबीबीबीबीबीबीबी कॉन्स्ट-स्ट्रिंग/जंबो
ए|जी| सेशन बीबीबीबी एफ|ई|डी|सी 35सी [ A=5 ] op {वीसी, वीडी, वीई, वीएफ, वीजी}, मेथ@बीबीबीबी
[ A=5 ] op {वीसी, वीडी, वीई, वीएफ, वीजी}, साइट@बीबीबीबी
[ A=5 ] op {वीसी, वीडी, वीई, वीएफ, वीजी}, टाइप @ बीबीबीबी
[ A=4 ] op {वीसी, वीडी, वीई, वीएफ}, kind @BBBB
[ A=3 ] op {वीसी, वीडी, वीई}, kind @ बीबीबीबी
[ A=2 ] op {वीसी, वीडी}, kind @BBBB
[ A=1 ] op {वीसी}, kind @BBBB
[ A=0 ] op {}, kind @BBBB

यहाँ अक्षरांकन में असामान्य विकल्प गिनती बनाने की इच्छा को दर्शाता है और संदर्भ सूचकांक का लेबल प्रारूप 3rc के समान है।

35ms [ A=5 ] op {वीसी, वीडी, वीई, वीएफ, वीजी}, vtaboff@BBBB
[ A=4 ] op {वीसी, वीडी, वीई, वीएफ}, vtaboff@BBBB
[ A=3 ] op {वीसी, वीडी, वीई}, vtaboff@BBBB
[ A=2 ] op {वीसी, वीडी}, vtaboff@BBBB
[ A=1 ] op {वीसी}, vtaboff@BBBB

यहाँ अक्षरांकन में असामान्य विकल्प गिनती बनाने की इच्छा को दर्शाता है और संदर्भ सूचकांक का लेबल 3rms प्रारूप के समान है।

35c प्रारूप के स्थिर रूप से जुड़े invoke-virtual और invoke-super निर्देशों के लिए सुझाए गए प्रारूप
35मी [ A=5 ] op {वीसी, वीडी, वीई, वीएफ, वीजी}, इनलाइन@बीबीबीबी
[ A=4 ] op {वीसी, वीडी, वीई, वीएफ}, इनलाइन@बीबीबीबी
[ A=3 ] op {वीसी, वीडी, वीई}, इनलाइन@बीबीबीबी
[ A=2 ] op {वीसी, वीडी}, इनलाइन@बीबीबीबी
[ A=1 ] op {vC}, inline@BBBB

यहाँ अक्षरांकन में असामान्य विकल्प गिनती करने की इच्छा को दर्शाता है और संदर्भ सूचकांक का लेबल 3rmi प्रारूप के समान है।

35c प्रारूप के इनलाइन लिंक्ड invoke-static और invoke-virtual निर्देशों के लिए सुझाए गए प्रारूप
एए| सेशन बीबीबीबी सीसीसीसी 3आरसी op {vCCCC .. vNNNN}, meth@BBBB
op {vCCCC .. vNNNN}, साइट@BBBB
op {vCCCC .. vNNNN}, टाइप करें@BBBB

जहां NNNN = CCCC+AA-1 , यानी A गिनती 0..255 निर्धारित करता है, और C पहला रजिस्टर निर्धारित करता है

3 आरएमएस op {vCCCC .. vNNNN}, vtaboff@BBBB

जहां NNNN = CCCC+AA-1 , यानी A गिनती 0..255 निर्धारित करता है, और C पहला रजिस्टर निर्धारित करता है

प्रारूप 3rc . के सांख्यिकीय रूप से जुड़े invoke-virtual और invoke-super निर्देशों के लिए सुझाए गए प्रारूप
3rmi op {vCCCC .. vNNNN}, inline@BBBB

जहां NNNN = CCCC+AA-1 , यानी A गिनती 0..255 निर्धारित करता है, और C पहला रजिस्टर निर्धारित करता है

प्रारूप 3rc . के इनलाइन लिंक्ड invoke-static और invoke-virtual निर्देशों के लिए सुझाए गए प्रारूप
ए|जी| सेशन बीबीबीबी एफ|ई|डी|सी एचएचएचएच 45सीसी [ A=5 ] op {वीसी, वीडी, वीई, वीएफ, वीजी}, मेथ@बीबीबीबी, प्रोटो@एचएचएचएच
[ A=4 ] op {वीसी, वीडी, वीई, वीएफ}, मेथ@बीबीबीबी, प्रोटो@एचएचएचएच
[ A=3 ] op {वीसी, वीडी, वीई}, मेथ@बीबीबीबी, प्रोटो@एचएचएचएच
[ A=2 ] op {वीसी, वीडी}, मेथ@बीबीबीबी, प्रोटो@एचएचएचएच
[ A=1 ] op {वीसी}, मेथ @ बीबीबीबी, प्रोटो @ एचएचएचएच
आह्वान-बहुरूपी
एए| सेशन बीबीबीबी सीसीसीसी एचएचएचएच 4आरसीसी op> {vCCCC .. vNNNN}, meth@BBBB, proto@HHHH

जहां NNNN = CCCC+AA-1 , यानी A गिनती 0..255 निर्धारित करता है, और C पहला रजिस्टर निर्धारित करता है

आह्वान-बहुरूपी/श्रेणी
एए| सेशन BBBB लो BBBB BBBB BBBB हाय 51ली op वीएए, #+बीबीबीबीबीबीबीबीबीबीबीबीबीबीबीबी कॉन्स्ट-वाइड