我不知道如何将所有东西拼凑在一起。
我想为以下“C”指令生成 llvm-ir:
asm volatile("nop");
Run Code Online (Sandbox Code Playgroud)
将来我想包括更先进的内联汇编,但这将是一个好的开始。
我读过了:
https://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html
https://llvm.org/docs/LangRef.html#inline-assembler-expressions
我的最后一次尝试如下:
char myasm[256]="nop";
char myconstraint[256]={0};
LLVMTypeRef voidty=LLVMVoidType();
LLVMValueRef asmcall=LLVMGetInlineAsm(voidty,myasm,strlen(myasm),
myconstraint,strlen(myconstraint),1,1,LLVMInlineAsmDialectIntel);
LLVMSetVolatile(asmcall,1);
LLVMValueRef call = LLVMBuildCall( llbuilder, asmcall, (LLVMValueRef *)dummy->data,
dummy->size, "acall");
Run Code Online (Sandbox Code Playgroud)
我只是遇到了段错误。问题不在于“虚拟”数组。我在其他地方使用它没有任何问题。在本例中,它只是一个大小为 0 的空列表。
如有帮助,将不胜感激。