比较指令的说明:
- 比较指令的作用是比较栈顶两个元素的大小,并将比较结果入栈。
-
比较指令有:dcmpg,dcmpl,fcmpg,fcmpl,lcmp。
- 与前面讲解的指令类似,首字符d表示double类型,f表示float,l表示long。
- 对于double和float类型的数字,由于NaN的存在,各有两个版本的比较指令。以float为例,有fcmg和fcmpl两个指令,他们的区别在于在数字比较时,若遇到NaN值,处理结果不同。
- 指令dcmpl和dcmpg也是类似的,根据其命名可以推测其含义,在此无需赘述。
- 指令lcmp针对long型整数,由于long型整数没有NaN值,故无需准备两套指令。
举例:
指令fcmpg和fcmpl都从栈中弹出两个操作数,并将它们做比较,设栈顶的元素为v2,栈顶顺位第2位的元素为v1,若v1=v2,则压入0;若v1>v2则压入1;若v1<v2则压入-1。
两个指令的不同之处在于,如果遇到NaN值,fcmpg会压入1,而fcmpl会压入-1。
梦想很模糊,去追,它会渐变清晰。青春励志,奋斗下去别放弃。
网友评论