代码之家  ›  专栏  ›  技术社区  ›  Leedehai

LLVM代码生成器:机器代码表示与机器无关吗?

  •  6
  • Leedehai  · 技术社区  · 7 年前

    :这个问题不是关于 LLVM IR ,但LLVM的 MIR ,比前一个更低的内部中间表示。

    关于LLVM的文档 Machine code description classes ,说(突出我的):

    在高层,LLVM代码被转换为 特定于机器 由MachineFunction、MachineBasicBlock和MachineInstr实例形成的表示。。。

    然而,同一段接着说:

    这个陈述完全 目标不可知论

    我的问题是,如何理解这一段?

    我很难调和这种中间陈述是 和 目标不可知论 同时。我认为在LLVM的上下文中,“machine”和“target”的意思是相同的——编译后的可执行文件使用的指令集架构(例如x86_64,MIPS)。

    欢迎举例子。

    1 回复  |  直到 7 年前
        1
  •  1
  •   arnt    7 年前

    有不同的方法可以针对特定的平台。例如,您可以为 add ,或者使用不同的溢出语义,或者可以使用相同的 对于所有对象,使用由所有目标平台的相同参数指定的操作数/标志,使用相同的默认值。

    机器IR以最抽象的形式表示指令。它不试图在这个目标上隐藏,指针有32位。

    推荐文章