美文网首页
算术指令及举例

算术指令及举例

作者: Shaw_Young | 来源:发表于2021-08-20 14:10 被阅读0次

1、作用:

算术指令用于对两个操作数栈上的值进行某种特定运算,并把结果重新压入操作数栈。

2、分类

大体上算术指令可以分为两类:对整型数据进行运算的指令与对浮点类型数据进行运算的指令。

3、byte、short、char和boolean类型说明

在每一大类中,都有针对Java虚拟机具体数据类型的专用算术指令。但没有直接支持byte、short、char和boolean类型的算术指令,对于这些数据的运算,都使用int类型的指令来处理。此外,在处理boolean、byte、short和char类型的数组时,也会转换为使用对应的int类型的字节码指令来处理。


4、运算时的溢出

数据运算可能会导致溢出,例如两个很大的正整数相加,结果可能是一个负数。其实Java虚拟机规范并无明确规定过整型数据溢出的具体结果,仅规定了在处理整型数据时,只有除法指令以及求余指令中当出现除数为0时会导致虚拟机抛出异常ArithmeticException。

5、运算模式

  • 向最接近数舍入模式:JVM要求在进行浮点数计算时,所有的运算结果都必须舍入到适当的精度,非精确结果必须舍入为可被表示的最接近的精确值,如果有两种可表示的形式与该值一样接近,将优先选择最低有效位为零的;
  • 向零舍入模式:将浮点数转换为整数时,采用该模式,该模式将在目标数值类型中选择一个最接近但是不大于原值的数字作为最精确的舍入结果。

6、NaN值使用

当一个操作产生溢出时,将会使用有符号的无穷大表示,如果某个操作结果没有明确的数学定义的话,将会使用NaN值来表示。而且所有使用NaN值作为操作数的算术操作,结果都会返回NaN。

所有的算术指令包括:

加法指令:iadd、ladd、fadd、dadd
减法指令:isub、lsub、fsub、dsub
乘法指令:imul、lmul、fmul、dmul
除法指令:idiv、ldiv、fdiv、ddiv
求余指令:irem、lrem、frem、drem //remainder:余数
取反指令:ineg、lneg、fneg、dneg //negation:取反
自增指令:iinc
位运算符,又可分为:

  • 位移指令:ishl、ishr、iushr、lshl、lshr、lushr
  • 按位或指令:ior、lor
  • 按位与指令:iand、land
  • 按位异或指令:ixor、lxor

比较指令:dcmpg、dcmpl、fcmpg、fcmpl、lcmp

梦想很模糊,去追,它会渐变清晰。青春励志,奋斗下去别放弃。

相关文章

  • 算术指令及举例

    1、作用: 算术指令用于对两个操作数栈上的值进行某种特定运算,并把结果重新压入操作数栈。 2、分类 大体上算术指令...

  • 14. ARM 汇编指令集2

    常用ARM指令1:s数据处理指令 数据传输指令 mov mvn 算术指令 ...

  • 位运算

    算术移位指令【影响CF标志位】 SAL (Shift Arithmetic Left) 算术左移 MOV ...

  • 计算机指令学习

    一个完善的指令系统应该包括: 数据传送指令 Load/Save指令 输入输出指令 In/Out指令 算术运算指...

  • 2018-06-02

    一、汇编 1.先把寻址方式和指令看了一遍(当然,也没记住多少)指令系统:数据传送指令算术指令逻辑指令 串操作指令s...

  • Java 面试系列:Java 中的运算符和流程控制 + 面试题

    算术运算符 Java 中的算术运算符,包括以下几种: 算术运算符名称举例+加法1+2=3-减法2-1=1*乘法2*...

  • ARM汇编代码速成。

    ARM指令集 1.跳转指令 2.存储器与寄存器交互数据指令 核心 3.数据传送指令 4.数据算术运算指令 5.数据...

  • 《深》第三章 程序的机器级表示(2)

    讲了些基本的算术指令以及压栈和出栈指令,如下,都是些基本的知识,所以简单记录如下: leaq这个指令很特别: 可以...

  • ARM指令集详解

    算术和逻辑指令ADC : 带进位的加法(Addition with Carry)ADC{条件}{S}

  • Cortex-M0指令集——ASR

    算术右移指令: 此指令可以方便的将一个寄存器的值除以一个常数。 (1) ASRS , , #...

网友评论

      本文标题:算术指令及举例

      本文链接:https://www.haomeiwen.com/subject/svrabltx.html