Estoy tratando de ejecutar el siguiente example para compilar, ensamblar y desmontar un pequeño programa utilizando la cadena de herramientas LLVM.Compilar, montar y desmontar utilizando la cadena de herramientas LLVM
Mi intención es aprender cómo funciona, así que en futuros intentos podría hacer una prueba de rendimiento cambiando y/o reordenando las instrucciones del asistente.
Para empezar, lo primero que obtener el código picadura de un programa simulado:
% llvm-gcc -O3 -emit-llvm hello.c -c -o hello.bc
Una vez que tengo el código mordedura, intento utilizar el llvm-DIS utilidad para echar un vistazo a la asamblea LLVM LLC código y compilar el programa posterior al montaje nativa utilizando el generador de código LLC (sólo para el batido de tratar):
% llvm-dis < hello.bc | less
% llc hello.bc -o hello.s
Pero en ambos casos me sale el siguiente error:
llvm-dis: Invalid MODULE_CODE_GLOBALVAR record
¿Alguna idea sobre cómo resolver este problema?
He buscado en Google y no he encontrado una solución. También he intentado utilizar
otool -tV hello
Pero la salida no es compatible con llvm. En lugar de obtener el siguiente formato de montaje:
.section __TEXT,__text,regular,pure_instructions
.globl _main
.align 4, 0x90
_main:
Leh_func_begin1:
pushq %rbp
Ltmp0:
movq %rsp, %rbp
Ltmp1:
subq $16, %rsp
Ltmp2:
leaq L_.str(%rip), %rax
me sale:
__TEXT,__text) section
start:
0000000100000eb0 pushq $0x00
0000000100000eb2 movq %rsp,%rbp
0000000100000eb5 andq $0xf0,%rsp
0000000100000eb9 movq 0x08(%rbp),%rdi
0000000100000ebd leaq 0x10(%rbp),%rsi
0000000100000ec1 movl %edi,%edx
0000000100000ec3 addl $0x01,%edx
Lo cual no es válido para mí, ya que el gato compilar la última asamblea con por ejemplo:
% gcc hello.s -o hello.native
Gracias por adelantado.
llvm-gcc está en desuso. ¿Puedes intentar clang? – arrowd
Tengo el problema similar. ¿Lo has resuelto de alguna manera? – Cartesius00