13 Stimmen

Reguläre Ausdrücke und Montage

Ich kenne 8086-Assembler und lerne MIPS-Assembler. Außerdem lerne ich Reguläre Ausdrücke, dann möchte ich wissen:

  • Wie kann ich reguläre Ausdrücke auf sie anwenden?

12voto

John Feminella Punkte 292907

Dies ist ein schwieriges Problem, das bei der Montage von Grund auf gelöst werden muss. Keine Assembler-Sprache würde reguläre Ausdrücke als erstklassiges Konstrukt unterstützen, weil der Unterschied in der Abstraktionsebene zu groß ist, um eine sinnvolle Einbeziehung zu ermöglichen. Das bedeutet, dass Sie es selbst entwickeln müssen.

Die Unterstützung regulärer Ausdrücke ist im Wesentlichen so, als hätten Sie einen Compiler in Ihrem Programm, der den Ausdruck in eine Folge von passenden Anweisungen übersetzt. Sie müssen alle Bestandteile selbst erstellen: eine Übersetzungsmaschine, eine Reihe von Transformationsregeln, einen DFA-Assembler und eine Anpassungsmaschine.

Das heißt, es ist nicht unmöglich! Fangen Sie klein an, unterstützen Sie winzige Teilmengen der eigentlichen Sprache, die Sie unterstützen wollen, und arbeiten Sie sich dann nach oben. Sehen Sie sich Kapitel 16 von Assembler-Programmierung für eine detaillierte Anleitung, wie Sie Ihre eigene Engine für reguläre Ausdrücke erstellen können. Sie benötigen ein gutes Verständnis ihrer Funktionsweise (das Ihnen in diesem Kapitel vermittelt wird) und auch ein solides Verständnis von Assembler (siehe dazu die früheren Kapitel).

4voto

anta40 Punkte 6289

Versuchen Sie dies: AsmRegEx - Engine für reguläre Ausdrücke

Es ist in FASM geschrieben. Leider sieht es so aus, als würde das Projekt nicht mehr weitergehen...

1voto

t0mm13b Punkte 33393

Reguläre Ausdrücke gibt es nicht in Assembler, das scheint eine etwas bizarre Frage zu sein, denn Regex sind eine höhere Sprache, sie existieren nicht auf der Ebene der Nüsse und Schrauben...

Edit : Nathan, aquí ist der Link, der für Sie von Interesse sein könnte. Scrollen Sie nach unten bis zum Ende der Seite ;)

Ich hoffe, das hilft, Mit freundlichen Grüßen, Tom.

1voto

Eli Bendersky Punkte 246100

Die Menge der Artikel hier beschreibt, wie man eine sehr einfache, aber leistungsfähige Regex-Engine von Grund auf erstellt. Es wird C++ verwendet, aber die Theorie wird ausführlich erklärt, und der Code kann von einem erfahrenen Programmierer ohne allzu großen Aufwand in ASM übersetzt werden.

Abgesehen davon halte ich es für keine besonders interessante Übung, weder zum Erlernen von ASM noch zum Erlernen regulärer Ausdrücke. Man verzettelt sich einfach zu sehr in den Details.

0voto

Mick Punkte 4769

Beginnen Sie mit sehr einfachen regulären Ausdrücken. Erkennen Sie zum Beispiel Folgen von Buchstaben und Zahlen und arbeiten Sie sich von dort aus weiter vor. Sie müssen sich genau überlegen, wie Ihr Code seine Ergebnisse liefern soll.

Es könnte eine gute Idee sein, zuerst einen Regex-Parser in C zu erstellen, da mehr Leute in diesem Forum in der Lage sein werden, Ihnen zu helfen. Sobald Sie ihn zum Laufen gebracht haben, können Sie ihn in Assembler-Code übersetzen. Auch hier werden mehr Leute mit der 8086-Assembler-Programmierung vertraut sein als mit MIPS, so dass es eine gute Idee sein könnte, den 8086 zu verwenden, auch wenn die CPU-Architektur nicht sehr schön ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X