假设我在写一个虚拟机。我把程序数据读入一个字节数组现在我需要遍历这些字节(指令是两个字节)并实例化一个表示每个指令及其参数的小类。
什么是快速解析方法?以下是我想到的两种方法:
从左到右检查每一位,直到缩小到一个特定的操作码为止这就像一个二进制搜索。
检查某些程序以得出按使用频率排序的操作码列表,然后按该顺序检查完整的操作码。
注意:我将使用C语言中的位移位和掩蔽来检查,而不是正则表达式或字符串comps或任何类似的高级代码。
最佳答案
你不需要分析任何东西。如果这是在c中,则生成一个包含256个项的函数指针表,每个可能的字节值对应一个项,然后根据第一个字节值跳转到相应的函数。如果第二个字节是有效的,那么可以在函数中使用switch语句来处理第二个字节。原来的visual basic解释器(版本1-6)就是这样工作的。
关于algorithm - 解析操作码的高效算法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17107398/