
Ghidra में उच्च-स्तरीय Pcode (PcodeAST) आउटपुट करें
Ghidra एक प्रोसेसर-स्वतंत्र निरूपण का उपयोग करता है जिसे Pcode कहा जाता है। स्क्रिप्ट में इसे पकड़ना और उसके साथ काम करना आसान है (Instruction.getPcode()). कम ज्ञात तथ्य यह है कि डीकंपाइलर एक उच्च-स्तरीय Pcode निरूपण को उजागर करता है।
प्रोसेसर-स्वतंत्र एल्गोरिदम या AI मॉडल प्रशिक्षण के लिए Pcode का उपयोग करने में समस्या यह है कि निम्न-स्तरीय Pcode उस असेंबली भाषा से काफी मिलता-जुलता दिखता है जिससे यह आया है। निम्न-स्तरीय Pcode केवल Pcode भाषा में प्रत्येक असेंबली निर्देश का एक कार्यान्वयन है।
Ghidra डीकंपाइलर अनिवार्य रूप से एक Pcode सरलीकरणकर्ता और Pcode-से-C अनुवाद इंजन है। यह अधिक विस्तृत निम्न-स्तरीय Pcode को सरल बनाता है, और इसे सिंगल-स्टैटिक-असाइनमेंट (SSA) रूप (PcodeAST) में परिवर्तित करता है। फिर यह इस Pcode AST को C कोड के रूप में आउटपुट करता है। डीकंपाइलर के पास PCodeAST को आउटपुट करने के लिए एक API है। Ghidra में कुछ अंतर्निर्मित स्क्रिप्ट हैं जो API का उपयोग करती हैं, लेकिन वे ग्राफ़ उत्पन्न करने के लिए लिखी गई हैं (GraphAST.java, GraphASTandFlow.java). यह स्क्रिप्ट इसके बजाय केवल PCode AST को टेक्स्ट रूप में प्रिंट करती है।