tableswitch 0xaa(170)
用于switch条件跳转,case的值是连续的(可变长度指令)
tableswitch
<0-3 byte pad> ———————– 使得defaultbyte1与方法的的起始地址之间的距离正好是4的倍数。
defaultbyte1 ———————– 默认的跳转地址。
defaultbyte2
defaultbyte3
defaultbyte4
lowbyte1 ——————— case语句中的最小值。
lowbyte2
lowbyte3
lowbyte4
highbyte1 ———————- case语句中的最大值。
highbyte2
highbyte3
highbyte4
jump offsets… ———————- 零基址跳转表。
32位值的计算方法为(byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4 。
index – low + tableswitch的地址 = 跳转地址
Operand Stack
…, index →
…