为什么JVM表切换/查找切换指令的格式有0到3字节的填充



我已经了解了表开关/查找开关的格式。但是,在0到3字节之间填充的目的是什么?

由于历史原因而存在填充。第一批Java虚拟机没有JIT编译,它们逐个解释字节码指令。为了允许解释器直接从字节码流中读取32位偏移量,偏移量是32位对齐的——它们的地址是4字节的整数倍。

RISC处理器(如SPARC、ARMv5及更早版本等(只允许对齐的内存访问。例如,要用单个CPU指令从内存中读取32位值,地址必须是32位对齐的。如果地址没有对齐,那么获得32位值需要四次8位内存读取,当然这会更慢。

如今,优化已不再有用。

最新更新