From 5de563905075556886bfdf0848a6d9ef142bccc2 Mon Sep 17 00:00:00 2001 From: Omooo <869759698@qq.com> Date: Thu, 17 Oct 2019 10:08:52 +0800 Subject: [PATCH] =?UTF-8?q?finish=20=E5=AD=97=E8=8A=82=E7=A0=81=E6=A6=82?= =?UTF-8?q?=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../JVM/深入理解 Class 文件格式/字节码概述.md | 21 +++++++++++++++++++ blogs/Java/深入理解异常.md | 4 ++++ 2 files changed, 25 insertions(+) create mode 100644 blogs/JVM/深入理解 Class 文件格式/字节码概述.md create mode 100644 blogs/Java/深入理解异常.md diff --git a/blogs/JVM/深入理解 Class 文件格式/字节码概述.md b/blogs/JVM/深入理解 Class 文件格式/字节码概述.md new file mode 100644 index 0000000..465822e --- /dev/null +++ b/blogs/JVM/深入理解 Class 文件格式/字节码概述.md @@ -0,0 +1,21 @@ +--- +字节码概述 +--- + +### 概述 + +Java 虚拟机的指令由一个字节长度的操作码(opcode)和紧随其后的可选的操作数(operand)构成。“字节码”这个名字的由来也是因为操作码的长度用一个字节表示。 + +``` + [,] +``` + +比如将整形常量 100 压栈到栈顶的指令是 bipush 100,其中 bipush 就是操作码,100 就是操作数。 + +因为操作码长度只有一个字节长度,这使得编译后的字节码文件非常小巧紧凑,但同时也直接限制了整个 JVM 操作码指令集的数量最多只能有 256 个,目前已经使用了 200+。 + +大部分字节码指令都包含了所要操作的类型信息。比如 ireturn 用户返回一个 int 类型的数据,dreturn 用户返回一个 double 类型的数据,freturen 指令用户返回一个 float 类型的数据,这种方式也使得字节码实际的指令类型远小于 200 个。 + +字节码使用大端序表示,即高位在前,低位在后的方式。 + +字节码并不是某种虚拟 CPU 的机器码,而是一种介于源码和机器码中间的一种抽象表示方法,不过字节码通过 JIT 技术可以被进一步编译成机器码。 \ No newline at end of file diff --git a/blogs/Java/深入理解异常.md b/blogs/Java/深入理解异常.md new file mode 100644 index 0000000..1248ed1 --- /dev/null +++ b/blogs/Java/深入理解异常.md @@ -0,0 +1,4 @@ +--- +深入理解异常 +--- +