[LLVM] Formato de archivo básico e instrucciones de generación de CFG

1. Formato de archivo básico

Blog de referencia: diagrama de conversión de archivos llvm

  1. .carchivo, código fuente en lenguaje C.
  2. .bcArchivo, la forma binaria del bytecode llvm (código binario).
  3. .llarchivo, la forma textual del código de bytes llvm.
  4. .sarchivo, código de ensamblaje de máquina.
  5. .outarchivos, binarios ejecutables.

inserte la descripción de la imagen aquí
Generalmente, el compilador del lenguaje C (gcc o clang) convierte directamente el código fuente .cen un archivo binario ejecutable después de la ejecución .out.
clang es la interfaz de llvm, si necesitamos obtener el código de bytes de llvm y luego realizar algunas operaciones en el código de bytes, podemos usar el clang -emit-llvm -ccomando para obtener .bcel archivo.
Si necesita convertir bytecode a texto, use llvm-disconvert .bcto .ll; la operación opuesta es llvm-as.
llcLas instrucciones convierten el código de bytes en código ensamblador, llc es el backend de llvm, el llamado backend se refiere a la parte relacionada con un determinado conjunto de instrucciones, como ARM, x86, etc.

2. Generar CFG

método uno

clang -c -emit-llvm xxx.c -o xxx.bc
opt --view-cfg xxx.bc

Los archivos de puntos generados de esta manera están en la carpeta /tmp/…dot.

Método dos

llvm-dis xxx.bc
opt -dot-cfg xxx.ll

El archivo de puntos generado de esta manera está en el directorio actual, pero es un archivo oculto y debe mostrarse ls -a, por ejemplo .main.dot, .

Los métodos anteriores generan CFG interno (intra CFG).

3. Generar png

dot cfg.dot -Tpng -o cfg.png

Supongo que te gusta

Origin blog.csdn.net/weixin_45651194/article/details/129394703
Recomendado
Clasificación