【发布时间】:2020-09-16 14:09:11
【问题描述】:
我有一个服务器套接字,它从客户端接收一个字节(操作码)。
根据该字节的值,我需要使用特定函数解码更多数据。
例如:
- 如果值为
0x01,我需要call function1解码。 - 对于
0x02,执行call function2 - 等等……
我不想用比较和跳转语句硬编码,因为有超过 150 个可能的值,这将导致 400 多行代码。
实现这一点的最佳选择是什么,从而产生最干净的代码?在 C 语言中,我会用一个简单的数组来做到这一点:array[index] 其中数组存储函数指针,索引是操作代码。这将导致 O(1) 速度。
这只是一个一般性问题,但如果有帮助,我正在使用具有 NASM 语法的 x86_64 asm。
【问题讨论】:
标签: assembly x86-64 nasm function-pointers