示例代码:
int f_i32() {
__asm {
mov eax, 1
mov edx, 1
}
}
此代码的 AST:
我在 AST 中只得到 MSASMStmt,而在它里面什么也没有。
我想在 __asm block 中提取 ASM 语句的位置。 如何获得带有 clang 前端和 lib-tooling 库的那些?
最佳答案
找到答案。
想法是迭代 MSAsmStmt 返回的 ASM token 并获取每个 token 的位置。
size_t asmTokens = asmStmt->getNumAsmToks();
clang::Token* tokens = asmStmt->getAsmToks();
for (size_t i = 0; i < asmTokens; ++i) {
clang::Token token = tokens[i];
size_t tokloc = SourceManager.getExpansionLineNumber(token.getLocation());
}
关于c++ - 如何使用 clang 前端获取 asm 语句的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50713476/