JVM摘要--JVM的结构--01
【题外话】最近在坛子上看到了一篇介绍JVM的牛文,其中提到了一本书《The Java? Virtual Machine Specification》,由于是英文的,啃起来颇为费劲,所以写一点摘要以免忘记...
写的很零散,主要是给自己看的,望海涵
JVM可以执行的编译后的JAVA代码是与硬件和操作系统无关的二进制文件;一般都存在一个文件当中,即.class文件。
宏观上讲,JVM有两种数据类型:原语类型(原始数据类型)和引用类型;
Java的类型检查都是由编译器完成的,所以一般不需要JVM来做类型检查;JVM的指令集可以通过专门用于某些类型的操作指令来区分它所操作的数值类型是什么。比如iadd,ladd,fadd和dadd虽然都是用于两个数字的相加,但它们分别对应于int, long, float和double
JVM支持的原始数据类型包括数字类型(Numeric),布尔类型(boolean)和回址类型(returnAddress);
其中,Numeric Type包括:integral types 和 floating-point types;
Integer types包括:byte, short, int , long, char
Floating-point types 包括 floa(32位单精度)和double(64位双精度),遵循IEEE754格式定义,操作也遵循IEEE Stardard for Binary Floating-Point Arithmetic提到的标准;
要提到一点,IEEE754的标准,不仅包括了正负数,还包含了正负零(+0,-0),正负无穷以及NaN值(Not-A-Number,表示某些非法操作的结果,比如0.0/0.0)
returnAddress类型是JVM中的jsr,ret和jsr_w指令使用的。returnAddress这种类型不能被修改。
JVM虽然定义了boolean 类型,但却只提供了有限的操作。事实上,JAVA编程语言中针对boolean类型值的操作都变以为了JVM的int类型;
有三种类型的reference types:class types, array types以及interface types;