Я знаю 8086 Ассамблеи и обучения Ассамблеи MIPS. Кроме того, я изучаю регулярные выражения, а затем хочу знать:
- Как я могу использовать регулярные выражения для них?
Я знаю 8086 Ассамблеи и обучения Ассамблеи MIPS. Кроме того, я изучаю регулярные выражения, а затем хочу знать:
Это сложная проблема, которую нужно выполнить в сборе с нуля. Никакой язык ассемблера не поддерживал бы регулярные выражения как конструкцию первого класса, потому что слишком большая разница в уровне абстракции, чтобы сделать его полезным. Это означает, что вам нужно построить его самостоятельно.
Поддержка регулярных выражений по существу аналогична наличию в вашей программе компилятора, который преобразует выражение в последовательность соответствующих инструкций. Вам нужно будет собрать все составляющие: механизм перевода, последовательность правил преобразования, ассемблер DFA и соответствующий механизм.
Тем не менее, это не невозможно! Начните с малого, поддерживая крошечные подмножества реального языка, который вы хотите поддержать, а затем выполните свой путь вверх. Ознакомьтесь с главой 16 программирования языка сборки, чтобы подробно описать, как вы можете создать свой собственный механизм регулярных выражений. Вам нужно хорошее понимание того, как они работают (что даст вам эта глава), и прочное понимание сборки (см. Предыдущие главы для этого).
Попробуйте следующее: AsmRegEx - механизм регулярных выражений
Это написано в FASM. К сожалению, похоже, что проект больше не продвинется...
Регулярные выражения не существуют в сборке, что кажется немного странным вопросом, так как Regex имеют язык более высокого уровня, он не существует на уровне гаек и болтов...
Изменить: Натан, здесь - это ссылка, которая может вас заинтересовать. Прокрутите вниз до нижней части страницы;)
Надеюсь, это поможет, С наилучшими пожеланиями, Том.
Набор статьи здесь описывает, как создать простой, но мощный механизм регулярных выражений с нуля. Он использует С++, но подробно объясняет теорию, и код может быть переведен в ASM без особых усилий опытным программистом.
Тем не менее, я не считаю это особенно интересным упражнением, ни для обучения АСМ, ни для изучения регулярных выражений. Вы просто слишком увязнете в деталях.
Начните с очень простых регулярных выражений. Например, распознавая последовательности буквенных символов и числовых символов и работая оттуда. Вам нужно будет внимательно изучить, как ваш код будет доставлять результаты.
Может быть хорошей идеей, чтобы создать парсер регулярных выражений, является первым, так как больше людей на этом форуме смогут вам помочь. Как только вы его заработаете, можете перевести его на ассемблерный код. Опять же, больше людей здесь будут знакомы с программированием на языке ассемблера 8086, чем с MIPS, поэтому может быть хорошей идеей использовать 8086, хотя архитектура процессора не очень приятная.
Не уверен, хотите ли вы знать, как реализовать механизм регулярных выражений в ассемблере, или просто как легко использовать регулярные выражения для нулевых строк из языка ассемблера. Если это первое, вам даются некоторые указатели. Если это будет позже, это зависит от вашей платформы, но самый простой способ - вызвать C-кодированную библиотеку из вашей сборки. Варианты Unix имеют регулярные выражения POSIX, уже доступные в libc, и вы можете вызывать их из своей сборки, следуя соглашениям о вызовах aproppiate.