assembly - 哪些 CPU 支持 MOVBE 指令?

标签 assembly x86 endianness

有时 GCC 在使用 -march=atom 编译时会生成此指令.每个 Intel Atom CPU 都支持 MOVBE 吗?

还有哪些处理器支持这条指令?我似乎无法在英特尔网站上找到此信息。请帮忙。

最佳答案

该指令最初是英特尔® 凌动™ 处理器独有的。

从英特尔方面:

The Intel® Compilers 11.0 allow you to target the Intel® Atom™ processor using the /QxSSE3_ATOM or -xSSE3_ATOM compiler options. These options enable the generation of the movbe instruction which is unique to the Intel® Atom™ processor.



在其他微架构中( http://instlatx64.atw.hu/ 与来自 https://agner.org/optimize/ 的 uop 信息):
  • 主流英特尔:Haswell 及更高版本。包括 Haswell Xeon (Ex-xxxx v3)。
    解码为 2 或 3 uop,与 bswap 大致相同+ 加载或存储。
  • 主流AMD:Excavator ,以及锐龙家族。压路机和更早的没有它。
    有效地解码为单个 uop。

  • 非主流 CPU:
  • 传统有序英特尔凌动:所有
  • Intel Silvermont 系列乱序 Atom:全部。有效地解码为单个 uop。
  • AMD捷豹。有效地解码为单个 uop。
  • Intel Xeon Phi:Knight's Landing(基于 Silvermont)及更高版本。 (也许不在骑士的角落。)
  • 关于assembly - 哪些 CPU 支持 MOVBE 指令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5246146/

    相关文章:

    linux - Linux 中的 AVR 汇编器

    c - 在Linux上加载C运行时

    从微架构中抽象出来的 x86 程序计数器?

    c++ - 为什么 x86/x86_64 上的顺序语义通过 MOV [addr], reg + MFENCE 而不是 + SFENCE 使用?

    c++ - 如何告诉编译器不要优化内联汇编中使用的变量?

    c - SIMD SSE2 __m128i包含4个int32_t如何快速找到每个大于或小于0的整数

    c - 这个程序在大端和小端系统上都兼容吗?

    c - C中的字节顺序检测和性能

    c - 有没有什么办法可以在小端电脑上以大端模式编译和运行程序?

    assembly - 使用组装件关闭计算机