我是靠谱客的博主 任性柠檬,最近开发中收集的这篇文章主要介绍Intel 64/x86_64/IA-32/x86处理器 - 通用指令(4) - 比特位设置指令/字节设置指令,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Bit and Byte Instructions

比特指令测试并修改操作数的某些比特位;字节指令设置字节操作数的值,用来指示EFLAGS标志寄存器的状态。

指令

描述

BT

测试比特位(将要测试的比特位送CF标志位)

BTS

测试并设置比特位(将要测试的比特位送CF标志位后,设置操作数中对应的比特位)

BTR

测试并清除比特位(将要测试的比特位送CF标志位后,清除操作数中对应的比特位)

BTC

测试并求补比特位(将要测试的比特位送CF标志位后,求补(即取反)操作数中对应的比特位)

BSF

前向扫描比特位(扫描源操作数中设置为1的最低有效比特位,如果找到则将该比特位索引位置保存在目标操作数当中)

BSR

反向扫描比特位(扫描源操作数中设置为1的最高有效比特位,如果找到则将该比特位索引位置保存在目标操作数当中)

 

下面是字节设置指令,在文档中有时候统称为SETcc指令。这些指令会测试EFLAGS的标志位,如果条件成立,则目标字节设置为1;否则设置为0。

指令

描述

SETE/SETZ

如果相等/为0,则目标字节设置为1

SETNE/SETNZ

如果不相等/不为0,则目标字节设置为1

SETA/SETNBE

如果(无符号数)大于/不小于等于,则目标字节设置为1

SETAE/SETNB/SETNC

如果(无符号数)大于等于/不小于/无借位,则目标字节设置为1

SETB/SETNAE/SETC

如果(无符号数)小于/不大于等于/有借位,则目标字节设置为1

SETBE/SETNA

如果(无符号数)小于等于/不大于,则目标字节设置为1

SETG/SETNLE

如果(有符号数)大于,则目标字节设置为1

SETGE/SETNL

如果(有符号数)大于等于,则目标字节设置为1

SETL/SETNGE

如果(有符号数)小于,则目标字节设置为1

SETLE/SETNG

如果(有符号数)小于等于,则目标字节设置为1

SETS

如果符号标志SF为1(即负数),则目标字节设置为1

SETNS

如果符号标志SF为0(即0或正数),则目标字节设置为1

SETO

如果溢出标志OF为1,则目标字节设置为1

SETNO

如果溢出标志OF为0,则目标字节设置为1

SETPE/SETP

如果奇偶校验标志PF为1,则目标字节设置为1

SETPO/SETNP

如果奇偶校验标志PF为0,则目标字节设置为1

TEST

逻辑比较

CRC32

为循环冗余校验CRC计算提供的硬件加速指令,主要用于快速高效的实现各类数据完整性协议。CPUID.01:ECX[SSE4.2]=1时,才支持CRC32指令。

POPCNT

统计源操作数中比特位为1的个数,将统计结果保存到目标操作数中。CPUID.01:ECX[POPCNT]=1时,才支持POPCNT指令。

 

最后

以上就是任性柠檬为你收集整理的Intel 64/x86_64/IA-32/x86处理器 - 通用指令(4) - 比特位设置指令/字节设置指令的全部内容,希望文章能够帮你解决Intel 64/x86_64/IA-32/x86处理器 - 通用指令(4) - 比特位设置指令/字节设置指令所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部