概述
比较和测试指令
1.条件码
除了常用的整数寄存器,CPU还维护着一组单个位的条件码寄存器,他们描述了最近的算术或逻辑操作的属性。这个寄存器在X86CPU内部的名称叫做EFLAGS,在x86-64CPU内部扩展成RFLAGS。
最常用的条件码标志有:
- CF:进位标志。最近的操作使最高位产生了进位。可用来检查无符号操作的溢出。
- ZF:零标志。最近的操作得出的结果为0.
- SF:符号标志。最近的操作得到的结果为负数。
- OF:溢出标志。最近的操作导致一个补码溢出——正溢出或负溢出。
2.比较指令
CMP指令根据两个操作数之差来设置条件码,除了只设置条件码而不更新目的寄存器之外,CMP指令与SUB的行为是一样的。
指令 | 基于 | 描述 |
---|---|---|
CMP S1, S2 | S2 - S1 | 比较 |
cmpb | 比较字节 | |
cmpw | 比较字 | |
cmpl | 比较双字 | |
cmpq | 比较四字 |
3.测试指令
TEST指令的行为与AND指令一样,除了它们只设置条件码而不改变目的寄存器的值。
典型的用法是,两个操作数是一样的,或其中的一个操作数是一个掩码,用来指示哪些位应该被测试。
指令 | 基于 | 描述 |
---|---|---|
TEST S1, S2 | S1 & S2 | 测试 |
testb | 测试字节 | |
testw | 测试字 | |
testl | 测试双字 | |
testq | 测试四字 |
最后
以上就是霸气小熊猫为你收集整理的比较和测试指令比较和测试指令的全部内容,希望文章能够帮你解决比较和测试指令比较和测试指令所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复