
إخراج Pcode عالي المستوى (PcodeAST) في Ghidra
يستخدم Ghidra تمثيلًا مستقلاً عن المعالج يُسمى Pcode. ومن السهل التقاطه والتعامل معه في السكربتات (Instruction.getPcode()). لكن الأقل شهرة هو أن المفكك (decompiler) يكشف عن تمثيل Pcode بمستوى أعلى.
تكمن مشكلة استخدام Pcode في الخوارزميات المستقلة عن المعالج أو تدريب نماذج الذكاء الاصطناعي في أن Pcode منخفض المستوى يشبه إلى حد كبير لغة التجميع التي جاء منها. إذ أن Pcode منخفض المستوى هو مجرد تنفيذ لكل تعليمة تجميع بلغة Pcode.
مفكك Ghidra هو في جوهره محرك لتبسيط Pcode وتحويل Pcode إلى لغة C. فهو يبسّط Pcode منخفض المستوى الأكثر إسهابًا، ويحوّله إلى صيغة الإسناد الأحادي الثابت (SSA) (PcodeAST). ثم يُخرج شجرة Pcode AST هذه ككود C. يوفر المفكك واجهة برمجة تطبيقات (API) لإخراج PCodeAST. لدى Ghidra سكربتات مدمجة تستخدم هذه الواجهة لكنها كُتبت لتوليد الرسوم البيانية (GraphAST.java, GraphASTandFlow.java). أما هذا السكربت فهو يكتفي بطباعة شجرة PCode AST في شكل نصي.