Comment Insérer une LLVM de l'Enseignement?

J'ai cherché pendant des heures et je ne trouve rien qui puisse m'aider. Je suis en train de travailler sur un projet qui implique un FunctionPass. J'ai mis en place un runOnFunction(Fonction &f) la méthode et ça fonctionne bien. Fondamentalement, il doit:

1) Détecter un magasin d'instruction

2) Convertir l'adresse mémoire de la stocker des instructions à un Entier

3) de Modifier le nombre entier à l'aide d'un bit à bit ET de l'exploitation (0000FFFF)

4) Convertir l'entier de retour dans le pointeur

Jusqu'à présent, j'ai les suivantes:

 virtual bool runOnFunction(Function &F) {
  for (Function::iterator bb = F.begin(), bbe = F.end(); bb != bbe; ++bb) {
    BasicBlock& b = *bb;
    for (BasicBlock::iterator i = b.begin(), ie = b.end(); i != ie; ++i) {
      if(StoreInst *si = dyn_cast<StoreInst>(&*i)) {
        PtrToIntInst* ptrToInt = new PtrToIntInst(si->getPointerOperand(), IntegerType::get(si->getContext(), 32), "", si);
      }
    }
  }
  return true;
}

Je ne peux pas pour la vie de me comprendre comment l'insertion de l'instruction, ou même de trouver un moyen de créer une ET de l'instruction. Si quelqu'un pouvait me diriger dans la bonne direction, ce serait génial.

Merci d'avance.

OriginalL'auteur KritSandvich | 2012-11-13