目前主要的无条件跳转指令为goto。指令goto接收两个字节的操作数,共同组成一个带符号的整数,用于指定指令的偏移量,指令执行的目的就是跳转到偏移量给定的位置处。
如果指令偏移量太大,超过双字节的带符号整数的范围,则可以使用指令goto_w,它和goto有相同的作用,但是它接收4个字节的操作数,可以表示更大的地址范围。
指令jsr、jsr_w、ret虽然也是无条件跳转的,但主要用于try-finally语句,且已经被虚拟机逐渐废弃,故不在这里介绍这两个指令。
指令名称 | 描述 |
---|---|
goto | 无条件跳转 |
goto_w | 无条件跳转(宽索引) |
jsr | 跳转至指定16位offset位置,并将jsr下一条指令地址压入栈顶 |
jsr_w | 跳转至指定32位offset位置,并将jsr_w下一条指令地址压入栈顶 |
ret | 返回至由指定的局部变量给出的指令位置(一般与jsr、jsr_w联合使用) |
梦想很模糊,去追,它会渐变清晰。青春励志,奋斗下去别放弃。
网友评论