gpt4 book ai didi

windows - 为什么 LLVM JIT 生成的入口点在 64 位 Windows 下如此冗长?

转载 作者:可可西里 更新时间:2023-11-01 12:05:24 25 4
gpt4 key购买 nike

我正在 Windows 下玩 LLVM,只是想通过构建一些示例程序来更好地理解它。目前,我正在查看 HowToUseJIT。我注意到当我运行 64 位时,我得到了一个入口点,其中包含一些看起来非常疯狂的代码。它将 rsi、rdi 和 xmm6-xmm15 保存在堆栈中;然后设置 rax 和 rcx;然后在最终调用调用链中的下一个函数之前恢复所有先前保存的值。

这有充分的理由吗?或者它是否表明 Windows x64 上的 LLVM 还没有完全准备好迎接黄金时段?

编辑:这是与 LLVM 2.8 一起使用的。我刚刚下载了当前在 2.9 分支上的内容,但它没有显示相同的行为。

最佳答案

这取决于。所有寄存器保存都是由于 Win64 ABI,当它们被调用者保存时,因此应该正确保存/恢复。

它们没有消除 noop 加载/存储的原因可能是由于 JIT 默认使用的快速指令选择器。它将以非常快的速度为您提供二进制代码,但会牺牲质量。

尝试切换到普通codegen,看看问题是否还存在。

关于windows - 为什么 LLVM JIT 生成的入口点在 64 位 Windows 下如此冗长?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5307364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com