2012-01-23 14 views
8

क्या ऑपोड्स और उनके तर्कों के साथ 2-टुपल्स की सूची से पायथन बाइटकोड बनाने का कोई आसान तरीका है?opcodes और तर्क की सूची से पायथन बाइटकोड बनाएँ?

उदाहरण के लिए:

>>> bytecode_compile([ 
     ('LOAD_CONST', 2), 
     ('STORE_FAST', 'a'), 
     ('LOAD_FAST', 'a'), 
     ('RETURN_VALUE',)]) 
'd\x01\x00}\x00\x00|\x00\x00S' 
+1

पायथन कोड लिखने और पाइथन कंपाइलर का उपयोग करने में क्या गलत है? –

+2

http://code.google.com/p/byteplay/ – reclosedev

+0

@ एसएलओटी मेला पर्याप्त। यकीन नहीं है कि मैं चीजों को इतना कठिन बनाने की कोशिश क्यों कर रहा हूं। – exupero

उत्तर

2

मैं एक अजगर "बाईटकोड विधानसभा" कोडांतरक मौजूद नहीं लगता है, लेकिन यह नहीं हो सकता है कि एक अपने आप को बनाने के लिए कठिन। पाइथन स्रोत कोड में पायथन-एक्स.वाय.जेड/शामिल/opcode.h, ऑपकोड के लिए सभी बाइटकोड सूचीबद्ध तर्कों के साथ सूचीबद्ध हैं।

+0

आप 'डी' मॉड्यूल के साथ समान सूची भी प्राप्त कर सकते हैं, f.e. 'len (dis.opmap)' Python 3.4.3 के 'opcode.h' में 103 ऑपकोड के खिलाफ 101 लौटाता है। – ilyaigpetrov

1

मैंने इस here की लंबाई में लिखा था, इसलिए मैं इसे दोहराना नहीं चाहूंगा लेकिन कुछ सारांश टिप्पणियां दूंगा।

यह निश्चित रूप से करने योग्य है, लेकिन मुझे आश्चर्य है कि यह कितना उपयोगी होगा। लिंक इस तरह की चीजें चलाने और लिखने के तरीके में जाता है।

बाइटकोड ओपोड, या ओपोड नाम, या संस्करणों के बीच ओपोड के अर्थशास्त्र दोनों के संदर्भ में बदल सकता है। वास्तव में, पायथन 3.6 और बाइटकोड से परे एक शब्दकोड बन जाता है।

यदि आप हालांकि इस मार्ग को नीचे जाने का निर्णय लेते हैं xdis ने हाल ही में ऐसा करने के लिए list2bytecode() फ़ंक्शन जोड़ा है।

संबंधित मुद्दे