Регулярные выражения и блок

Я знаю 8 086 блоков и изучение блока MIPS. Кроме того, я изучаю Регулярные выражения, тогда я хочу знать:

  • Как я могу использовать Регулярные выражения на них?
10
задан Bart Kiers 31 January 2010 в 21:18
поделиться

6 ответов

Это сложная задача, которую нужно решить при сборке с нуля. Ни один язык ассемблера не поддерживал бы регулярные выражения в качестве первоклассной конструкции, потому что существует слишком большая разница в уровне абстракции, чтобы сделать его полезным включением. Значит, вам нужно построить его самостоятельно.

Поддержка регулярных выражений по сути похожа на компилятор внутри вашей программы, который переводит выражение в последовательность соответствующих инструкций. Вам нужно будет построить все составляющие части: механизм перевода, серию правил преобразования, ассемблер DFA и механизм сопоставления.

Тем не менее, это не невозможно! Начните с малого, поддерживая крошечные подмножества реального языка, который вы хотите поддерживать, а затем продвигайтесь вверх. Прочтите главу 16 книги «Программирование на языке ассемблера» , где подробно описано, как вы можете создать свой собственный механизм регулярных выражений. Вам потребуется хорошее понимание того, как они работают (что вам даст эта глава), а также твердое понимание сборки (см. Предыдущие главы).

10
ответ дан 3 December 2019 в 22:37
поделиться

Набор статей здесь описывает, как построить очень простой, но мощный двигатель Regex с нуля. Он использует C ++, но подробно объясняет теорию, и код может быть переведен на ASM без особых усилий опытного программиста.

Это сказано, я не думаю, что это особенно интересное упражнение, ни для изучения ASM, ни для изучения регулярных выражений. Вы просто будете слишком увязнуть деталями.

1
ответ дан 3 December 2019 в 22:37
поделиться

Не уверены, если вы хотите знать, как реализовать двигатель Regex в ассемблере или просто как легко использовать Регулярные выражения на ваших нулях строк с языка сборки. Если это первый, вам дали некоторые указатели. Если это позже, это зависит от вашей платформы, но самый простой способ - вызвать библиотеку C-CODED из вашей сборки. Варианты UNIX имеют регулярные выражения POSIX, уже доступны в LIBC, и вы можете позвонить им из вашей сборки, просто после того, как апропиальные конвенции о вызовах.

0
ответ дан 3 December 2019 в 22:37
поделиться

Начните с очень простыми регулярными выражениями. Например, распознавание последовательностей алфавитных символов и числовых символов и работают оттуда. Вам нужно будет тщательно рассмотреть, как ваш код собирается доставить его результаты.

Может быть, хорошая идея создать анализатор Regeex, прежде всего, так как больше людей на этом форуме смогут помочь вам. Как только вы получите его работать, чтобы перевести его в код ассемблера. Опять же, больше людей здесь будут знакомы с программированием языка сборки 8086, чем с MIPS, поэтому может быть хорошая идея использовать 8086, даже если архитектура процессора не очень хорошая.

0
ответ дан 3 December 2019 в 22:37
поделиться

Регулярные выражения не существуют в ассемблере, что кажется немного странным вопросом, так как регулярные выражения относятся к языку более высокого уровня, они не существуют на уровне гаек и болтов ...

Изменить: Натан, здесь - ссылка, которая может вас заинтересовать. Прокрутите страницу вниз;)

Надеюсь, это поможет, С уважением, Том.

1
ответ дан 3 December 2019 в 22:37
поделиться

Попробуйте следующее: AsmRegEx - механизм регулярных выражений

Написан на FASM. К сожалению, похоже, что проект больше не продвигается ...

3
ответ дан 3 December 2019 в 22:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: