Pergunta

Nota: Marcado como Wiki da comunidade.

Onde está a máquina virtual de baixo nível no LLVM?

Vejo que temos LLVM-G ++ e C-Lang, mas para mim, um LLVM é algo quase como Valgrind de um simulador, onde as instruções são executadas nele, e posso escrever programas para instrumentar o código / interrupção quando certas condições acontecer / etc ...

Onde as ferramentas como essa são criadas no LLVM?

Obrigado!

Foi útil?

Solução

Eu acho que você está procurando por Qemu, não LLVM.

A máquina virtual de baixo nível no LLVM é que, depois de converter a entrada da linguagem C e C ++ de nível superior em uma representação interna de baixo nível (como um estágio no processo de compilação normal), pode salvar essa representação de baixo nível e Execute -o em um compilador JIT (que, portanto, age um pouco como uma máquina virtual). Esse compilador JIT faz uma quantidade substancial de otimização e, portanto, espero que seja difícil instrumentar a forma em que você está pensando-em particular, não faz instrução por instrução passando pela execução.

O Qemu, por outro lado, é um emulador de código aberto que faz instrução por instrução passando pelo código da máquina. Ele já contém uma certa capacidade de código de instrumento para procurar certas condições, pois pode se conectar ao GDB e definir pontos de observação e assim por diante, que são implementados no próprio Qemu.

Outras dicas

Para usar o LLVM para executar o código X86, você deve verificar a libcpu ou o LLVM-QEMU desatualizado.

Olhe para Programa x86 em execução _on_ llvm

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top