1

だから、私はさまよい続けており、オープンソースのアセンブラーコマンドlexemアナライザー(TinyPGの実装かもしれません)が必要になったと確信しています。

私が知りたいのは、与えられたテキストがアセンブラーコードである可能性があることをアプリに理解させる方法です。例えば

mov ah, 37

受け入れる必要がありますが、

bad my 42

いけない。

自己実装に関するアドバイスも歓迎します。「ハードコア」な実装を理解できるかどうかわからないからです。

4

2 に答える 2

1

かなり正確な識別のために、行が正規表現と一致することを確認することは問題ありません。これは実際には、ファイルの内容が読み取られ、トークンが識別される、コンパイラの最初のステップであるスキャン フェーズと非常によく似ています。次のステップ - 実際の構文解析はもっと複雑です (ただし、アセンブラーにとってはそれほど複雑ではありません)。

正規表現の例は次のようになります。

^[ \t]*((mov|xor|add|mul)[ \t]*([abcde][xhl]|[cd]s)[ \t]*,)|jmp[ \t]*([abcde][xhl]|[cd]s|[0-9A-F]*)[ \t]*$

最初に 2 つのパラメーターを持つ有効な命令をチェックし、次にパラメーターの存在をチェックし、続いて単一のパラメーター命令の代替をチェックし、次に別のパラメーター (2 番目のパラメーターとして有効な数値定数を含む) の存在をチェックします。

于 2013-06-02T14:33:40.550 に答える