estoy escribiendo a compiler que utiliza LLVM como backend, y mi compilador genera el siguiente código ensamblador LLVMmontaje LLVM: asigno constante entera para registrar
@0 = private constant [25 x i8] c"Hello World to %dntegers\00"
declare void @printf (i8*, i32)
define void @main() {
%1 = getelementptr [25 x i8]* @0, i32 0, i32 0
%2 = 1
tail call void @printf(i8* %1, i32 %2)
ret void
}
Pero me sale el siguiente error:
c.ll:8:8: error: expected instruction opcode
%2 = 1
^
La documentación muestra examples like that embargo.
¿Sabes cómo hacer que esto funcione? Actualmente, estoy usando en su lugar:
%2 = add i32 0, 1 ; FIXME
¿Por qué quieres vincular un valor constante a un nombre? Simplemente use la constante en su lugar, como en 'tail call void @printf (i8 *% 1, i31 1)'. Por cierto, ¿estás generando IR como un texto? ¿Para qué? –
Porque esto es más simple para el generador de código. Estoy usando IR textual porque no tengo acceso fácil a librerías C/C++ del lenguaje que estoy usando. – Mildred