finish 字节码概述

master
Omooo 5 years ago
parent 2ea6d0d622
commit 5de5639050
  1. 21
      blogs/JVM/深入理解 Class 文件格式/字节码概述.md
  2. 4
      blogs/Java/深入理解异常.md

@ -0,0 +1,21 @@
---
字节码概述
---
### 概述
Java 虚拟机的指令由一个字节长度的操作码(opcode)和紧随其后的可选的操作数(operand)构成。“字节码”这个名字的由来也是因为操作码的长度用一个字节表示。
```
<opcode> [<cperand1>,<operand2>]
```
比如将整形常量 100 压栈到栈顶的指令是 bipush 100,其中 bipush 就是操作码,100 就是操作数。
因为操作码长度只有一个字节长度,这使得编译后的字节码文件非常小巧紧凑,但同时也直接限制了整个 JVM 操作码指令集的数量最多只能有 256 个,目前已经使用了 200+。
大部分字节码指令都包含了所要操作的类型信息。比如 ireturn 用户返回一个 int 类型的数据,dreturn 用户返回一个 double 类型的数据,freturen 指令用户返回一个 float 类型的数据,这种方式也使得字节码实际的指令类型远小于 200 个。
字节码使用大端序表示,即高位在前,低位在后的方式。
字节码并不是某种虚拟 CPU 的机器码,而是一种介于源码和机器码中间的一种抽象表示方法,不过字节码通过 JIT 技术可以被进一步编译成机器码。

@ -0,0 +1,4 @@
---
深入理解异常
---
Loading…
Cancel
Save