gpt4 book ai didi

assembly - F3H可以作为POCNT、LZCNT、ADOX指令以外的指令的强制前缀吗?

转载 作者:行者123 更新时间:2023-12-03 06:27:48 26 4
gpt4 key购买 nike

正如 Intel 64 and IA-32 Architectures Software Developer's Manual Combined Volumes 2A and 2B: Instruction Set Reference, A-Z 中所述

2.1.1 Instruction Prefixes

F3H is also used as a mandatory prefix for POPCNT, LZCNT and ADOX instruction.

但是在

2.1.2 Opcodes

For example, CVTDQ2PD consists of the following sequence: F3 0F E6. The first byte is a mandatory prefix (it is not considered as a repeat prefix).

我可以说如果英特尔手册中操作码的第一个字节是F3H,那么它是该指令的强制前缀吗?

最佳答案

是的。

在序列0F E6中,第一个字节0F是一个两字节操作码转义。
另一个字节 E6 根据附录 A(A.3 节)中的表格进行翻译,并在此处以简短形式报告

CVTDQ2PD and siblings

上面一行是字节的低半字节,第一列是高半字节。

我们可以看到,如果没有F3字节,序列0F E6不会编码任何指令。
66 0F E6 编码 vcvttpd2dq
F3 0F E6 编码 vcvtdq2pd
F2 0F E6 编码 vcvtpd2dq

所以,是的,F3 是强制性的。

<小时/>

诚然,英特尔的做法是一个怪癖,字节 F3 是一个真正的 rep 前缀,但 CPU 不会这样解释。
您可以将 0F E6 视为未命名指令,例如 unm2,这样:

  • unm2 的行为与 ud2
  • rep unm2 的行为与 vcvtdq2pd
  • repne unm2 的行为与 vcvtpd2dq
  • 具有大小覆盖的
  • unm2 的行为与 vcvttpd2dq

关于assembly - F3H可以作为POCNT、LZCNT、ADOX指令以外的指令的强制前缀吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38179684/

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