13

私は8086アセンブリとMIPSアセンブリの学習を知っています。また、私は正規表現を学んでいます、そして私は知りたいです:

  • それらに正規表現を使用するにはどうすればよいですか?
4

6 に答える 6

12

これは、アセンブリを最初から引き抜くのが難しい問題です。抽象化レベルの違いが大きすぎて有用な包含にはならないため、アセンブリ言語はファーストクラスの構成として正規表現をサポートしません。つまり、自分で作成する必要があります。

正規表現をサポートすることは、基本的に、式を一連の一致する命令に変換するコンパイラーをプログラム内に持つようなものです。変換エンジン、一連の変換ルール、DFAアセンブラー、およびマッチングエンジンなど、すべての構成要素を構築する必要があります。

とはいえ、それは不可能ではありません!小さく始めて、サポートしたい実際の言語の小さなサブセットをサポートしてから、上に向かって進んでいきます。独自の正規表現エンジンを構築する方法の詳細なウォークスルーについては、アセンブリ言語プログラミングの第16章を確認してください。それらがどのように機能するか(この章で説明します)を十分に理解し、アセンブリについてもしっかりと理解する必要があります(これについては前の章を参照してください)。

于 2010-01-31T16:13:59.963 に答える
4

これを試してください: AsmRegEx-正規表現エンジン

それはFASMで書かれています。残念ながら、プロジェクトはもう進行しないようです...

于 2010-03-29T14:48:42.990 に答える
1

正規表現はアセンブリには存在しません。これは少し奇妙な質問のようです。Regexは高級言語の性質を持っているため、基本的なレベルでは存在しません...

Edit: Nathan, here is the link that might be of interest to you. Scroll down to the bottom of the page ;)

Hope this helps, Best regards, Tom.

于 2010-01-31T16:15:51.753 に答える
1

ここにある一連の記事では、非常にシンプルで強力な正規表現エンジンを最初から構築する方法について説明しています。C ++を使用しますが、理論を詳細に説明しており、経験豊富なプログラマーがあまり労力をかけなくてもコードをASMに変換できます。

とはいえ、ASMの学習にも正規表現の学習にも、特に興味深い演習ではないと思います。あなたはただ細部に行き詰まりすぎるでしょう。

于 2010-01-31T16:35:19.123 に答える
0

非常に単純な正規表現から始めます。たとえば、アルファベット文字と数字のシーケンスを認識し、そこから上に向かって進みます。コードが結果をどのように提供するかを慎重に検討する必要があります。

このフォーラムのより多くの人々があなたを助けることができるので、最初に正規表現パーサーをCで作成することは良い考えかもしれません。動作させたら、それをアセンブラコードに変換できます。繰り返しになりますが、ここではMIPSよりも8086アセンブリ言語プログラミングに精通している人が多いため、CPUアーキテクチャがあまり良くない場合でも、8086を使用することをお勧めします。

于 2010-01-31T16:45:08.927 に答える
0

アセンブラで正規表現エンジンを実装する方法や、アセンブリ言語のヌルエンド文字列で正規表現を簡単に使用する方法を知りたいかどうかはわかりません。それが最初の場合、あなたはいくつかの指針を与えられています。後者の場合、プラットフォームによって異なりますが、最も簡単な方法は、アセンブリからCコード化ライブラリを呼び出すことです。Unixバリアントには、libcですでに使用可能なPOSIX正規表現があり、適切な呼び出し規約に従って、アセンブリからそれらを呼び出すことができます。

于 2010-01-31T18:28:10.207 に答える