You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让LLVM后端生成的汇编标签以点号开头?

解决LLVM后端生成局部标签缺少点号前缀的问题

核心原因

LLVM中局部标签的前缀(比如.)是由目标后端的MCAsmInfo类控制的,你的后端没有正确配置私有标签前缀,导致生成的局部标签不带.。

具体修改步骤

  1. 定位后端的MCAsmInfo实现类
    通常这个类命名格式为[你的目标架构名]MCAsmInfo,比如自定义架构叫MyArch,对应类就是MyArchMCAsmInfo,一般定义在MyArchMCAsmInfo.cpp这类文件中。

  2. 配置私有标签前缀
    在该类的构造函数里,添加或修改PrivateLabelPrefix的赋值:

    PrivateLabelPrefix = ".";
    

    这个参数直接决定LLVM生成私有(局部)标签时的前缀字符,设置为.后,原本的LBB1_2就会自动变成.LBB1_2。

  3. 确认标签生成逻辑合规
    检查后端的AsmPrinter实现,确保生成基本块标签时使用LLVM标准接口(比如emitBasicBlockStart),而非手动拼接标签名。标准接口会自动读取MCAsmInfo的配置,给局部标签加上前缀。如果是自定义生成标签的代码,要调用createPrivateLabel方法创建私有标签,不要用普通的createLabel。

验证修改

重新编译后端后,生成的汇编代码里的局部标签就会带上.前缀,和参考代码的格式一致。

内容的提问来源于stack exchange,提问作者xiaoroubao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 16:41:03