Lexer Assembly STM32 was created just today.
I had only few examples from this repo
https://github.com/MightyPork/stm32-asm-examples
and I don't even have the full list of keywords, opcodes, registers of STM32.
so my keywords lists are not complete.
write all lexer bugs here.
lexer shows "proc" blocks in the code-tree.
lexer Assembly STM32 & GNU
the full text of instructions depends on the kernel, in principle there is in the docs on mcu, in my case, for stm32f4, this is pm0214 Programming manual
I was also puzzled by the creation of an editor, though for gnu as
now only stm32f4 is available
dynamic highlighting with full parsing of assembler commands (registers, symbols)
there is a simple interaction with st-link, started doing debugging (no breakpoints set yet)
Of course, everything is not as beautiful as yours and the language is still only Russian
on this forum is it offtopic?
unfortunately did not understand how to insert images (img tag is prohibited)
https://sun9-39.userapi.com/impf/qQCiEx ... type=album
directLink https://yadi.sk/d/NSVJ1wY9S-soGA
I was also puzzled by the creation of an editor, though for gnu as
now only stm32f4 is available
dynamic highlighting with full parsing of assembler commands (registers, symbols)
there is a simple interaction with st-link, started doing debugging (no breakpoints set yet)
Of course, everything is not as beautiful as yours and the language is still only Russian
on this forum is it offtopic?
unfortunately did not understand how to insert images (img tag is prohibited)
https://sun9-39.userapi.com/impf/qQCiEx ... type=album
directLink https://yadi.sk/d/NSVJ1wY9S-soGA
-
- Posts: 392
- Joined: 01.12.2020 13:46
я пишу редактор ассемблера для arm микроконтроллеров, в частности сам использую для stm32f4
и тоже столкнулся с необходимостью парсинга текстов
если кто сталкивался с системой команд arm то он представляет сложность задачи: многие команды имеют суффиксы, в зависимости от суффиксов у команд могут быть те или иные аргументы.. причем я не понимаю зачем делать просто токен-подсветку не учитывая синтаксис команды - кроме красоты кода никакого реального удобства эта подсветка не предоставляет - так как написанное может быть полной чушью с точке зрения компилятора из за неправильно написанной команды, и будет выявлено только при компиляции проекта, а не во время редактирования, поэтому при постановке задачи я решил, что буду проводить полный разбор команд, я не просто подсвечивать токены
результат могу показать на картинках
вот например пример правильных и не правильных команд, и как они показываются например в vscode и вот так подсветка происходит в моем редакторе помоему такая подсветка и должна быть в редакторах кода.
очень большой проблемой оказалась обработка группы asm файлов, так как существуют еще и глобальные символы, а так же в моих старых проектах бывали файлы определений на 6000 строк - что требует не малой оптимизации при парсинге
так вот, пишу здесь потому чтобы рассказать о своем ухищрении которое возможно будет кому то интересно:
парсить что либо при помощи тексто-заданных правил - очень дорого с точки зрения времени!
поэтому я преобразовывал текстовый файл парсинга в байт код... фактически, казалось бы крайне неоптимальный способ описания правил парсинга в ini файле реально работает намного быстрее парсинга по текстовым строкам ("а ля регулярные выражения" перл)
достаточным оказалось не так уж большого списка правил (не вложился файл, наверное pdf слишком большой)
по вопросу в стартовом сообщениии о наборе команд: все команды описаны в PM0214 Programing manual (для cortex-m4), гуглится, находится на сайте ST
так же мой редактор поддерживает навигацию по символам/меткам/файлам, программирование при помощи st-link, отладку при помощи openOCD (это еще пишется)
не знаю можно ли здесь размещать ссылки на мой проект поэтому воздержусь...
и тоже столкнулся с необходимостью парсинга текстов
если кто сталкивался с системой команд arm то он представляет сложность задачи: многие команды имеют суффиксы, в зависимости от суффиксов у команд могут быть те или иные аргументы.. причем я не понимаю зачем делать просто токен-подсветку не учитывая синтаксис команды - кроме красоты кода никакого реального удобства эта подсветка не предоставляет - так как написанное может быть полной чушью с точке зрения компилятора из за неправильно написанной команды, и будет выявлено только при компиляции проекта, а не во время редактирования, поэтому при постановке задачи я решил, что буду проводить полный разбор команд, я не просто подсвечивать токены
результат могу показать на картинках
вот например пример правильных и не правильных команд, и как они показываются например в vscode и вот так подсветка происходит в моем редакторе помоему такая подсветка и должна быть в редакторах кода.
очень большой проблемой оказалась обработка группы asm файлов, так как существуют еще и глобальные символы, а так же в моих старых проектах бывали файлы определений на 6000 строк - что требует не малой оптимизации при парсинге
так вот, пишу здесь потому чтобы рассказать о своем ухищрении которое возможно будет кому то интересно:
парсить что либо при помощи тексто-заданных правил - очень дорого с точки зрения времени!
поэтому я преобразовывал текстовый файл парсинга в байт код... фактически, казалось бы крайне неоптимальный способ описания правил парсинга в ini файле реально работает намного быстрее парсинга по текстовым строкам ("а ля регулярные выражения" перл)
достаточным оказалось не так уж большого списка правил (не вложился файл, наверное pdf слишком большой)
по вопросу в стартовом сообщениии о наборе команд: все команды описаны в PM0214 Programing manual (для cortex-m4), гуглится, находится на сайте ST
так же мой редактор поддерживает навигацию по символам/меткам/файлам, программирование при помощи st-link, отладку при помощи openOCD (это еще пишется)
не знаю можно ли здесь размещать ссылки на мой проект поэтому воздержусь...
[quote="uvviewsoft"]разрешаю ответить тут по русски, но более подробно+понятно.
a) to create lexer for GNU AS? if yes, pls send several GNU AS files. your IDE has them?
пример проекта во вложении, старт тактирования, старт systick, мигание светодиодами GPIOH 2 & 3
гм.. zip архив не вкладывается
даю ссылку https://yadi.sk/d/rx5EhHMWTClkAQ
ну и ссылка на редактор в текущей реализации https://yadi.sk/d/DgczJg88rTjXWg
a) to create lexer for GNU AS? if yes, pls send several GNU AS files. your IDE has them?
пример проекта во вложении, старт тактирования, старт systick, мигание светодиодами GPIOH 2 & 3
гм.. zip архив не вкладывается
даю ссылку https://yadi.sk/d/rx5EhHMWTClkAQ
ну и ссылка на редактор в текущей реализации https://yadi.sk/d/DgczJg88rTjXWg
-
- Posts: 392
- Joined: 01.12.2020 13:46
понятно, что хороший редактор получается. что для CudaText? вобщем то можно было бы задать все эти правила в regex лексера, но будет некрасиво (вся строка одним цветом, все токены) и медленно. так что пока оставляю.
есть еще вариант. делаем пустой лексер (без покраски, просто чтобы был). или берем subj. на него "вешаем" плагин и плагин должен красить. по событию on_change/ on_change_slow. искать кодом все что надо и делать Editor.attr().
есть еще вариант. делаем пустой лексер (без покраски, просто чтобы был). или берем subj. на него "вешаем" плагин и плагин должен красить. по событию on_change/ on_change_slow. искать кодом все что надо и делать Editor.attr().
-
- Posts: 392
- Joined: 01.12.2020 13:46