如何实现函数映射表?
最近我在设计一个芯片的模拟器,要实现一个指令到函数的映射。指令是一个16位整数(二进制)的,然后有两百多个函数。指令和函数有对应关系。现在我想做到的是,根据给出的指令,调用相应的函数。最直接的想法当然是用switch 和case,但这显然不是一个高效的方法。网上有提到“函数映射表”,但是我并没有找到具体的原理和实现。
或者换句话说,有没有别的高效率的方法来执行一个200个case的switch语句?
[解决办法]
用 hash 表,指令作为 Key, 函数指针作为值
[解决办法]
简单的二维数组也是可行的,以指令从小到大的顺序排,
查找的时候用二分。
[解决办法]
16位,就是65536大小的数组,直接下标1:1的映射。
typedef void (*ptr_func)();
ptr_func map_func[65536];