【发布时间】:2020-10-12 10:43:14
【问题描述】:
我知道jump tables主要用于在汇编中创建switch语句:
int a = 5;
switch (a){
case 5:
...
break;
...
}
在这种情况下,跳转只是一个指向具有instructions 的内存地址的指针来执行case 5 的工作。
如果我没记错的话,lookup table 已经在数组中预先计算了结果?所以不是编写代码来计算它们,而是返回数组索引?有点像HashMap。
以上两个听起来和我很相似,它们基本上是一样的吗?一个指向指令,另一个返回预先计算好的结果?
【问题讨论】:
-
我认为跳转表是查找表的一个特例;包含分支指令的查找表。
-
分店地址
-
C语言中没有像跳转表这样的东西,为什么你把它标记为
C? -
@P__J__ 函数指针数组是一个跳转表。事实上,许多嵌入式系统将其中断向量表实现为一个用 C 语言编写的函数指针数组 - 由硬件调用的函数。
-
@P__J__ 不,它确实可以包含分支指令。
标签: c lookup-tables jump-table