J'ai un code c qui calcule la factorielle d'un int "factorial.c". Je le compile à llvm code lisible "factorial.ll" et je modifie dans le code llvm compilé. L'objectif est d'exécuter le code llvm modifié et de voir sa sortie, Comment puis-je faire cela?Comment exécuter le code llvm
4
A
Répondre
3
Cela dépendra de la façon dont votre émis LLVM est assemblé et quelles bibliothèques il lie contre, mais par exemple l'exécution de la factorial.ll
suivante avec la commande shell lli
$ lli factorial.ll
Factorial of 10 = 3628800
exécutera la fonction main
avec le JIT et l'utilisation la norme printf
pour afficher le résultat sur stdout.
@.str = private unnamed_addr constant [22 x i8] c"Factorial of %d = %d\0A\00", align 1
declare i32 @printf(i8*, ...)
define i32 @factorial(i32 %n) nounwind uwtable {
entry:
%n.addr = alloca i32, align 4
store i32 %n, i32* %n.addr, align 4
%0 = load i32* %n.addr, align 4
%cmp = icmp sle i32 %0, 1
br i1 %cmp, label %cond.true, label %cond.false
cond.true: ; preds = %entry
br label %cond.end
cond.false: ; preds = %entry
%1 = load i32* %n.addr, align 4
%2 = load i32* %n.addr, align 4
%sub = sub nsw i32 %2, 1
%call = call i32 @factorial(i32 %sub)
%mul = mul nsw i32 %1, %call
br label %cond.end
cond.end: ; preds = %cond.false, %cond.true
%cond = phi i32 [ 1, %cond.true ], [ %mul, %cond.false ]
ret i32 %cond
}
define i32 @main(i32 %argc, i8** %argv) nounwind uwtable {
entry:
%retval = alloca i32, align 4
%argc.addr = alloca i32, align 4
%argv.addr = alloca i8**, align 8
store i32 0, i32* %retval
store i32 %argc, i32* %argc.addr, align 4
store i8** %argv, i8*** %argv.addr, align 8
%call = call i32 @factorial(i32 10)
%call1 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([22 x i8]* @.str, i32 0, i32 0), i32 10, i32 %call)
ret i32 0
}
Questions connexes
- 1. Générer le code ObjC en utilisant LLVM
- 2. Comment insérer un code d'assemblage via LLVM?
- 3. Ecriture de l'octet llvm code
- 4. comment convertir le code machine natif en llvm bytecode
- 5. Exécuter le code dynamique
- 6. Génération de code LLVM pour 'lambda', 'define'
- 7. Est-il possible de générer automatiquement le code API cv llvm à partir de LLVM-IR?
- 8. Comment exécuter le code C# en utilisant le code C#?
- 9. Comment exécuter le code secret Android dans le code source?
- 10. Exécuter le code PHP
- 11. comment exécuter le code jsp sur onclick
- 12. comment exécuter le code compilé par JavaCompiler?
- 13. Comment puis-je exécuter le code suivant
- 14. Comment exécuter le code source Android 2.3?
- 15. Comment exécuter le code PHP en eclipse
- 16. Comment exécuter le code d'assemblage dans FASM
- 17. Comment exécuter le code suivant jQuery
- 18. Comment exécuter le code sans l'interface graphique
- 19. Comment exécuter le code Ruby du terminal?
- 20. Comment exécuter le code généré par codeDom?
- 21. Comment exécuter le code d'initialisation d'une palette?
- 22. Comment initialiser le symboliseur externe de LLVM?
- 23. Quel est le problème avec ce code IR LLVM
- 24. Opcode NVPTX à code hexadécimal dans LLVM
- 25. Comment convertir les IR de llvm en code c?
- 26. Comment créer un code source LLVM sur Eclipse?
- 27. Exécuter le code PHP conditionnellement
- 28. php exécuter le code javascript
- 29. Exécuter le code de trace?
- 30. Comment compiler cet ASM LLVM?
Nice, c'est ce que je cherche :) merci – user3794683