Допустим, я пишу виртуальную машину. Я читаю в программе данные в массив байтов. Теперь мне нужно пройтись по этим байтам (инструкции состоят из двух байтов) и создать экземпляр небольшого класса, представляющего каждую инструкцию и ее аргументы.
Каким будет быстрый подход к синтаксическому анализу? Вот два способа, о которых я подумал:
- Логическое разветвление путем проверки каждого бита слева направо, пока я не сужу его до определенного кода операции. Это будет похоже на бинарный поиск.
- Проверка некоторых программ для составления списка кодов операций, упорядоченных по частоте использования, а затем проверка полного кода операции в этом порядке.
Примечание. Для проверки я буду использовать сдвиг битов и маскирование в C, а не регулярные выражения или строковые композиции или что-то в этом роде.
switch
es, не получая огромной перегрузки случаев. У вас есть ссылка на описание этой ВМ? - person harold   schedule 14.06.2013