多条件分支跳转指令是专为switch-case语句设计的,主要有tableswitch和lookupswitch。
指令名称 | 描述 |
---|---|
tableswitch | 用于switch条件跳转,case值连续 |
lookupswitch | 用于switch条件跳转,case值不连续 |
从助记符上看,两者都是switch语句的实现,它们的区别:
- tableswitch要求
多个条件分支值是连续的
,它内部只存放起始值和终止值,以及若干个跳转偏移量,通过给定的操作数index,可以立即定位到跳转偏移量位置,因此效率比较高
。 - 指令lookupswitch内部
存放着各个离散的case-offset对
,每次执行都要搜索全部的case-offset对,找到匹配的case值,并根据对应的offset计算跳转地址,因此效率较低
。
指令tableswitch的示意图如下图所示。由于tableswitch的case值是连续的,因此只需要记录最低值和最高值,以及每一项对应的offset偏移量,根据给定的index值通过简单的计算即可直接定位到offset。
梦想很模糊,去追,它会渐变清晰。青春励志,奋斗下去别放弃。
网友评论