ARMv8逻辑与算术运算指令之一:条件标志位NZCV的具体含义

        A64指令集沿用了A32指令集中的条件操作,在PSTATE寄存器中,有4个条件标志位,分别为N、Z、C、V。

一.作用

        条件标志位保存着最近执行的算术或逻辑指令的状态信息。

二.条件标志位的具体意义

条件标志位的意义
序号条件标志描述
1N(1)负数标志(上一次的运算结果为负值)
(2)当两个补码表示的有符号数进行运算时:
①N=1,表示结果为负数
②N=0,表示结果为正数或零
2Z(1)零结果标志(上一次运算结果为零)
(2)对于CMP指令,Z=1,表示进行比较的两个数大小相等
3C

(1)进位标志(上一次运算结果发生了无符号数溢出)
(2)下面分4种情况讨论C的设置方法:
①加法指令(包括比较指令CMN)
        当结果产生了进位,则C=1,表示无符号数运算发生上溢出;其他情况下C=0。

例如:

        mov  x0,2

        mov  x1,-2

        cmn  x0,x1

        x1的值为负数,负数在计算机中用补码表示,即为0xFFFFFFFFFFFFFFFE,cmn指令会让x0的值和x1的值做加法运算,产生了无符号上溢出,即C=1,且结果为0,即Z=1
②减法指令(包括比较指令CMP)
        当运算中发生借位,则C=0,表示无符号数运算发生下溢出;其他情况下C=1。
③包含移位操作的非加/减法运算指令
        C中包含最后一次被溢出的位的数值。
④其他非加/减法运算指令
        C位的值通常不受影响。

4V(1)溢出标志(上一次运算结果发生了有符号溢出)
(2)分2种情况:
①加/减法运算指令
        当操作数和运算结果为二进制的补码表示的带符号数时,V=1表示符号位溢出。
②其他的指令
通常不影响V位,具体可参考各指令的说明。

三.常见的条件操作后缀

常见的条件操作后缀
序号后缀意义条件标志
1MI结果为负数N=1
2PL结果为正数或零N=0
3EQ相等Z=1
4NE不相等Z=0
5CS/HS发生了无符号数溢出C=1
6CC/LO没有发生无符号数溢出C=0
7VS发生了有符号数溢出V=1
8VC没有发生有符号数溢出V=0
9HI无符号数>(C=1)&&(Z=0)
10LS无符号数≤(C=0) || (Z=1)
11GE有符号数≥N==V
12LT有符号数<N != V
13GT有符号数>(Z==0)&&(N==V)
14LE有符号数≤(Z==1)||(N!=V)


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全栈工程师修炼日记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值