2016-03-27 7 views
0

Wenn ich llvm::Module::dump aufrufen druckt es Integer-Konstanten in Dezimal. Zum Beispiel:haben llvm :: Module :: dump print Ganzzahlen in hex

%1 = load float, float* inttoptr (i64 4404658304 to float*) 

Gibt es eine Möglichkeit, ich kann es mit hex formatieren? Vermutlich erlaubt die IR-Syntax hexadezimale Konstanten.

Antwort

0

Ohne patchen llvm ist es NICHT möglich.

, wenn Sie Patch llvm offen sind, dann können Sie lib/IR/AsmWriter.cpp ändern: 1084

static void WriteConstantInternal(raw_ostream &Out, const Constant *CV, 
            TypePrinting &TypePrinter, 
            SlotTracker *Machine, 
            const Module *Context) { 
    if (const ConstantInt *CI = dyn_cast<ConstantInt>(CV)) { 
     if (CI->getType()->isIntegerTy(1)) { 
     Out << (CI->getZExtValue() ? "true" : "false"); 
     return; 
     } 
     Out << CI->getValue(); 
     return; 
    } 

hier Sie Code unter patchen können ganze Zahlen hex dump.

+0

Ich dachte über das Dumping an eine Zeichenfolge und Suche nur nach "i64 [integer]", so dass ich nichts in LLVM ändern muss. – Taylor

+0

Du hast dein endgültiges Ziel noch nicht erwähnt, wenn es dann für dich klappt dann prost. –