
Génère du Pcode de haut niveau (PcodeAST) dans Ghidra.
Ghidra utilise une représentation indépendante du processeur appelée Pcode. Il est facile de la récupérer et de l'utiliser dans des scripts (Instruction.getPcode()). Il est moins connu que le décompilateur expose une représentation Pcode de plus haut niveau.
Le problème de l'utilisation du Pcode pour des algorithmes indépendants du processeur ou pour l'entraînement de modèles d'IA est que le Pcode de bas niveau ressemble beaucoup au langage assembleur dont il est issu. Le Pcode de bas niveau n'est qu'une implémentation de chaque instruction assembleur dans le langage Pcode.
Le décompilateur de Ghidra est essentiellement un simplificateur de Pcode et un moteur de traduction Pcode-vers-C. Il simplifie le Pcode de bas niveau plus verbeux et le convertit en une forme à affectation unique statique (SSA) (PcodeAST). Il produit ensuite cet AST Pcode sous forme de code C. Le décompilateur dispose d'une API pour produire le PCodeAST. Ghidra possède quelques scripts intégrés qui utilisent l'API, mais ils sont écrits pour générer des graphes (GraphAST.java, GraphASTandFlow.java). Ce script, quant à lui, se contente d'afficher l'AST Pcode sous forme de texte.