概述
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) - 比特位设置指令/字节设置指令所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复