【发布时间】:2011-06-25 08:42:09
【问题描述】:
我正在尝试像这样在 C 中做一个跳转表
cmp eax, dword 3 ;max number
ja invalid ;default
jmp [eax*4+jumptable] ;jump to handler
invalid:
retn
jumptable:
dd handle0, handle1, handle2, handle3
handle0:
....
等等
我从这个开始
void dohandler(int a, int b, void (*jumptable[4]) (int x))
if (a > 3) return
else jumptable[3 * 4](b);
}
int main() {
void (*jumptable[4]) (int x);
jumptable[0] = &handler1;
... etc
dohandler(1,2,jumptable);
}
void handler1(int x) { ... }
.. etc
但效果不好..
【问题讨论】:
-
switch声明对你做了什么? -
你应该决定是用C还是ASM编程,然后再做。
-
switch.. 不像我在这个项目中需要的那样灵活,例如,300 例的 switch 语句并不理想..
标签: c assembly x86 jump-table