如何解决为什么JVM tableswitch / lookupswitch指令的格式具有0到3个字节的填充?
我已经了解了tableswitch / lookupswitch的格式。 但是,填充0到3个字节的目的是什么?
解决方法
存在填充是出于历史原因。第一批Java虚拟机没有JIT编译,它们一一解释字节码指令。为了允许解释器直接从字节码流中读取32位偏移量,这些偏移量是32位对齐的-它们的地址是4字节的精确倍数。
RISC处理器(如SPARC,ARMv5和更早版本等)仅允许对齐的内存访问。例如。要使用一条CPU指令从内存中读取32位值,该地址必须为32位对齐。如果地址未对齐,则获取32位值需要进行4次8位内存读取,这当然要慢一些。
如今,优化不再有用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。