0

假设我正在编写一个虚拟机。我将程序数据读入一个字节数组。现在我需要遍历这些字节(指令是两个字节)并实例化一个代表每条指令及其参数的小类。

什么是快速解析方法?这是我想到的两种方式:

  1. 通过检查从左到右的每一位进行逻辑分支,直到我将其缩小到特定的操作码。这就像二进制搜索。
  2. 检查一些程序以提供按使用频率排序的操作码列表,然后按该顺序检查完整的操作码。

注意:我将在 C 中使用位移位和掩码来检查,而不是正则表达式或字符串组合或任何类似的高级。

4

1 回答 1

2

你不需要解析任何东西。如果这是在 C 语言中,则创建一个函数指针表,其中包含 256 个条目,每个可能的字节值一个,然后根据第一个字节值跳转到适当的函数。如果第二个字节很重要,则可以在函数中使用 switch 语句来处理第二个字节。这就是最初的 Visual Basic 解释器(版本 1-6)的工作方式。

于 2013-06-14T13:39:59.197 回答