热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

VEX前缀编码和SSE/AVXMOVUP(D/S)指令

如何解决《VEX前缀编码和SSE/AVXMOVUP(D/S)指令》经验,如何解决这个问题?

我试图了解SSE / AVX指令的VEX前缀编码。因此,请问我是否提出简单的要求。我有以下相关问题。

让我们来看一下MOVUP(D / S)指令(0F 10)。如果我正确遵循2字节VEX前缀编码:

以下两种指令编码产生相同的结果:

db 0fh, 10h, 00000000b              ; movups      xmm0,xmmword ptr [rax]
db 0c5h, 11111000b, 10h, 00000000b  ; vmovups     xmm0,xmmword ptr [rax]

由于这两个:

db 066h, 0fh, 10h, 00000000b        ; movupd      xmm0,xmmword ptr [rax]
db 0c5h, 11111001b, 10h, 00000000b  ; vmovupd     xmm0,xmmword ptr [rax]

因此,我的问题是:

    v这些说明中的第一个代表什么?仅仅是表示VEX前缀的使用吗?

    如果我VEX在上面的示例中使用或不使用前缀,是否有任何区别(指令长度除外)?

    我试图在他们的文档中了解Intel的语法。说,此屏幕截图:

VEX.128.0F.WIG我可以看到的.128L第二个VEX字节的位2()。然后.0F是一个3字节的VEX前缀,m-mmmm格式为00001,对吗?但是WIG零件代表什么呢?

    VEX前缀仅由Intel CPU的认可?AMD呢?

    最后,movups和之间有什么区别movupd?似乎他们两个都只是从源内存中移出了16个字节:

进入xmm寄存器:

而“双”或“单”精密包装的确没有任何区别。

多谢您对我的耐心配合。


推荐阅读
author-avatar
mobiledu2502912781
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有