为什么编译器使用间接跳转指令将代码转换为汇编x86
?
例如:
.
jmp eax
或
jmp [eax*4+ebx]
哪些编译器使用间接跳转? 我们如何实现间接跳跃的最终目标?
请举例说明。 谢谢。
答案 0 :(得分:3)
如果你有一个很大的开关语句,如:
开关(表达式)
{
案例0:{做某事;打破;}
案例1:{break;}
案例2:{做别的事;} 案例3:{做事;打破;}
默认:{做大多数情况下的事情;打破;}
案例255:{和现在完全不同的东西;}
}
编译器可以使用间接跳转来实现它。但是,如果switch语句足够简单,或者不适合跳转表,编译器可能会使用多个分支。