小编Pau*_*tte的帖子

如何使用 llvm-c API 进行内联汇编

我不知道如何将所有东西拼凑在一起。

我想为以下“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 的空列表。

如有帮助,将不胜感激。

c llvm

2
推荐指数
1
解决办法
2197
查看次数

标签 统计

c ×1

llvm ×1