【问题标题】:Using the new sse registers xmm8 - xmm15使用新的 sse 寄存器 xmm8 - xmm15
【发布时间】:2011-06-17 07:15:55
【问题描述】:

是否可以使用 Visual Studio 2010 内联汇编器中的新 SSE 寄存器?如果是这样,还必须满足什么条件和其他条件?例如,我不知道新寄存器是否在 x86 和 x64 模式下都可用。

【问题讨论】:

    标签: assembly x86-64 sse cpu-registers


    【解决方案1】:

    在 Visual Studio 中为 x64 平台编译时不允许内联汇编(自 VS 2005 起)。

    我建议您使用intrinsics instead。它使编译器为您处理 CPU 寄存器,并进行一些指令重新排序(优化器开始处理代码,内联汇编绝不会出现这种情况)。

    【讨论】:

    【解决方案2】:

    关于你的第二个问题:

    例如,我不知道是否是新的 寄存器在 x86 中都可用 和 x64 模式。

    “新”寄存器xmm8 - xmm15在 64 位模式下可用。

    但请注意,新 AVX 寄存器的情况(对于支持 AVX 的 CPU 和操作系统,例如 Sandy Bridge CPU + Win7 SP1):

    ymm0 - ymm7 可用于 32 位和 64 位模式。

    ymm8 - ymm15 仅在 64 位模式下可用。

    【讨论】:

    • 和新的AVX-512一样,只有低8位寄存器在32位模式下可用,所以如果你不想“浪费”剩下的,你需要去64位24 个寄存器
    猜你喜欢
    • 1970-01-01
    • 2019-05-13
    • 1970-01-01
    • 1970-01-01
    • 2013-09-13
    • 2012-01-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多