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

汇编x86REP,REPZ,REPNZ,XACQUIRE和XRELEASE指令

如何解决《汇编x86REP,REPZ,REPNZ,XACQUIRE和XRELEASE指令》经验,为你挑选了1个好方法。

正如我已经注意到0xF3二进制前缀被用作:
1)重复和减小ecx直至ecx等于0INS,OUTS,MOVS,LODS,STOS指令和称为rep
2)重复和减小ecx直至ecx等于0ZF在设置CMPS,SCAS指令和称为repzrepe

0xF3二进制前缀被用作:
1)重复和减小ecx直至ecx等于0ZF不在集合中CMPS,SCAS指令和称为repnzrepne

最近注意到XACQUIRE/ XRELEASE前缀也有相同的二进制值(0xF2,0xF3)

那是什么XACQUIRE/ XRELEASE正在做什么(我读了一些关于锁定内存地址的东西,但它们不是工作线lock(我相信))?

还会怎么0xF3 mov byte ptr [ecx],0x0做?(将停在ZF设定\未设置或将停止只ecx等于0)
什么0xF2 mov byte ptr [ecx],0x0会做什么?



1> Margaret Blo..:

引用英特尔软件开发人员手册2,第2.1.1节

仅将这些前缀用于字符串和I/O指令(MOVS, CMPS, SCAS, LODS, STOS, INS,和OUTS).保留使用重复前缀和/或未定义的操作码与其他Intel 64或IA-32指令; 这种使用可能会导致不可预测的行为.
某些指令F2H,F3H可用作表示不同功能的强制前缀.

由于您刚刚发现的原因,重复前缀与非字符串非IO指令的使用是完全不确定的行为:英特尔重复使用它来表达相同"指令"的不同风格或实现新扩展.

对于HLE指令(例如xacquire),它们仅对特定指令集有效.
例如,xacquire只能使用ADD, ADC, AND, BTC, BTR, BTS, CMPXCHG, CMPXCHG8B, DEC, INC, NEG, NOT, OR, SBB, SUB, XOR, XADD,和XCHG- 这些指令不允许重复前缀,因此不会出现歧义.

通常,忽略不相关的前缀,因此在向指令添加前缀时可能会在将来的处理器中导致未定义的行为,在旧处理器中可以安全地忽略它.

这就是为什么不需要明确检查对HLE的支持:

没有HLE支持的硬件将忽略XACQUIREXRELEASE前缀提示,并且不会执行任何省略,因为这些前缀对应于REPNE/REPEIA-32前缀,这些前缀在指令中被忽略XACQUIREXRELEASE有效.

一个指令就像0xF3 mov byte ptr [ecx],0x0会做的mov byte ptr [ecx],0x0,今天,因为前缀被忽略.

重申一下:重复前缀用于为指令选择不同的语义.

有时指令有一个明确的名称和替代语义接近在一起(例如movs,repe movs,repne movs或这一事实tzcnt0xf3 bsf),有时指令并没有一个明确的名称,而且替代品不太明显(例如mulsd0xf2 mulps,mulss0xf3 mulps,mulpd0x66 mulps).

有关该xacquire指令的更多信息,请参阅"英特尔软件开发人员手册"或本文.


推荐阅读
  • 1引言在多线程并发编程中Synchronized一直是元老级角色,很多人都会称呼它为重量级锁,但是随着JavaSE1.6对Synchronized进行 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 李逍遥寻找仙药的迷阵之旅
    本文讲述了少年李逍遥为了救治婶婶的病情,前往仙灵岛寻找仙药的故事。他需要穿越一个由M×N个方格组成的迷阵,有些方格内有怪物,有些方格是安全的。李逍遥需要避开有怪物的方格,并经过最少的方格,找到仙药。在寻找的过程中,他还会遇到神秘人物。本文提供了一个迷阵样例及李逍遥找到仙药的路线。 ... [详细]
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • 重入锁(ReentrantLock)学习及实现原理
    本文介绍了重入锁(ReentrantLock)的学习及实现原理。在学习synchronized的基础上,重入锁提供了更多的灵活性和功能。文章详细介绍了重入锁的特性、使用方法和实现原理,并提供了类图和测试代码供读者参考。重入锁支持重入和公平与非公平两种实现方式,通过对比和分析,读者可以更好地理解和应用重入锁。 ... [详细]
  • 本文介绍了Java集合库的使用方法,包括如何方便地重复使用集合以及下溯造型的应用。通过使用集合库,可以方便地取用各种集合,并将其插入到自己的程序中。为了使集合能够重复使用,Java提供了一种通用类型,即Object类型。通过添加指向集合的对象句柄,可以实现对集合的重复使用。然而,由于集合只能容纳Object类型,当向集合中添加对象句柄时,会丢失其身份或标识信息。为了恢复其本来面貌,可以使用下溯造型。本文还介绍了Java 1.2集合库的特点和优势。 ... [详细]
  • 本文介绍了在go语言中利用(*interface{})(nil)传递参数类型的原理及应用。通过分析Martini框架中的injector类型的声明,解释了values映射表的作用以及parent Injector的含义。同时,讨论了该技术在实际开发中的应用场景。 ... [详细]
  • linux进阶50——无锁CAS
    1.概念比较并交换(compareandswap,CAS),是原⼦操作的⼀种,可⽤于在多线程编程中实现不被打断的数据交换操作࿰ ... [详细]
  • 本文介绍了如何使用MATLAB调用摄像头进行人脸检测和识别。首先需要安装扩展工具,并下载安装OS Generic Video Interface。然后使用MATLAB的机器视觉工具箱中的VJ算法进行人脸检测,可以直接调用CascadeObjectDetector函数进行检测。同时还介绍了如何调用摄像头进行人脸识别,并对每一帧图像进行识别。最后,给出了一些相关的参考资料和实例。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了源码分析--ConcurrentHashMap与HashTable(JDK1.8)相关的知识,希望对你有一定的参考价值。  Concu ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了VoLTE端到端业务详解|VoLTE用户注册流程相关的知识,希望对你有一定的参考价值。书籍来源:艾怀丽 ... [详细]
  • 本文目录一览:1、\mysybase.dump对数据库正常使用有影响吗 ... [详细]
  • html显示屏幕中心1,HTML中常见的长度单位
    8种机械键盘轴体对比本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?THML中常见的8种长度1、常见的单位px:像素 ... [详细]
author-avatar
奋怒的小超_656
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有