Hello,
I'm new with the llvm, and I trying to write a transformation adding
some lines of asm to a code.
My code is like this,
Type *VoidTy = llvm::Type::getVoidTy(getGlobalContext());
llvm::FunctionType *ty = llvm::FunctionType::get(VoidTy, false);
InlineAsm *iv = InlineAsm::get( ty, "mov $55, %eax", "",
true ); //
<----- here
SmallVector<llvm::Value*, 4> ArgList;
llvm::CallInst::Create( iv , ArgList, "", &ins);
It work perfect, but when I compiled I found the next error:
opt -load /home/david/LLVM/build_all/Release+Asserts/lib/LLVMHello.so
-hello < hello.bc > hello.t.bc 2> AAA
llc hello.t.bc -o hello.t.s
LLVM ERROR: Invalid $ operand number in inline asm string: 'mov $55,
%eax'
make: *** [opt] Error 1
If I remove the symbol "$", it works properly, but does not be the
corrected att syntax, because in att syntax the constants are prefixed
by $.
It is possible to write a inline asm instrucction to load a constant
in a register?
Thanks in advance.
David.