字节码命令对齐了吗?
Do bytecode commands aligned?
我知道编译器根据4字节(32位系统)或8字节(64位系统)边界进行数据结构对齐和填充。
但是解释器在生成字节码时会对齐字节码命令吗?如果一个命令由 1 个字节编码,而操作数由 1、2、4 或 8 个字节编码,那么如果在循环开关中解释字节码,处理器获取数据似乎不好?你怎么看?
P.S我问的不是执行 JIT 的解释器。
一般来说,答案是否定的,但 JVM 确实要求 lookupswitch 和 tableswitch 指令的数据部分进行 32 位对齐。必须对最多 3 个字节的填充(零)进行编码以确保正确对齐。
我知道编译器根据4字节(32位系统)或8字节(64位系统)边界进行数据结构对齐和填充。 但是解释器在生成字节码时会对齐字节码命令吗?如果一个命令由 1 个字节编码,而操作数由 1、2、4 或 8 个字节编码,那么如果在循环开关中解释字节码,处理器获取数据似乎不好?你怎么看?
P.S我问的不是执行 JIT 的解释器。
一般来说,答案是否定的,但 JVM 确实要求 lookupswitch 和 tableswitch 指令的数据部分进行 32 位对齐。必须对最多 3 个字节的填充(零)进行编码以确保正确对齐。