lexer Assembly STM32 & GNU

All questions regarding lexer highlighting schemes are discussed here...
Post Reply
uvviewsoft
Posts: 392
Joined: 01.12.2020 13:46

lexer Assembly STM32 & GNU

Post by uvviewsoft »

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.
Attachments
Screenshot from 2021-01-09 23-24-35.png
VitGo
Posts: 3
Joined: 12.01.2021 04:32

Post by VitGo »

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
uvviewsoft
Posts: 392
Joined: 01.12.2020 13:46

Post by uvviewsoft »

разрешаю ответить тут по русски, но более подробно+понятно.

EN: broken english. I don't get the idea. what do you want:
a) to create lexer for GNU AS? if yes, pls send several GNU AS files. your IDE has them?
b) to fix bugs in STM32 lexer? which issues? write in details.
VitGo
Posts: 3
Joined: 12.01.2021 04:32

Post by VitGo »

я пишу редактор ассемблера для arm микроконтроллеров, в частности сам использую для stm32f4

и тоже столкнулся с необходимостью парсинга текстов
если кто сталкивался с системой команд arm то он представляет сложность задачи: многие команды имеют суффиксы, в зависимости от суффиксов у команд могут быть те или иные аргументы.. причем я не понимаю зачем делать просто токен-подсветку не учитывая синтаксис команды - кроме красоты кода никакого реального удобства эта подсветка не предоставляет - так как написанное может быть полной чушью с точке зрения компилятора из за неправильно написанной команды, и будет выявлено только при компиляции проекта, а не во время редактирования, поэтому при постановке задачи я решил, что буду проводить полный разбор команд, я не просто подсвечивать токены

результат могу показать на картинках
вот например пример правильных и не правильных команд, и как они показываются например в vscode
то что показывает vscode
то что показывает vscode
vscode.jpg (4.26 KiB) Viewed 10800 times
и вот так подсветка происходит в моем редакторе
отображение в asmedit
отображение в asmedit
asmedit.jpg (5.37 KiB) Viewed 10800 times
помоему такая подсветка и должна быть в редакторах кода.


очень большой проблемой оказалась обработка группы asm файлов, так как существуют еще и глобальные символы, а так же в моих старых проектах бывали файлы определений на 6000 строк - что требует не малой оптимизации при парсинге

так вот, пишу здесь потому чтобы рассказать о своем ухищрении которое возможно будет кому то интересно:
парсить что либо при помощи тексто-заданных правил - очень дорого с точки зрения времени!
поэтому я преобразовывал текстовый файл парсинга в байт код... фактически, казалось бы крайне неоптимальный способ описания правил парсинга в ini файле реально работает намного быстрее парсинга по текстовым строкам ("а ля регулярные выражения" перл)
cortex-m4.ini
файл конфигурации парсинга
(58.7 KiB) Downloaded 333 times

достаточным оказалось не так уж большого списка правил (не вложился файл, наверное pdf слишком большой)

по вопросу в стартовом сообщениии о наборе команд: все команды описаны в PM0214 Programing manual (для cortex-m4), гуглится, находится на сайте ST

так же мой редактор поддерживает навигацию по символам/меткам/файлам, программирование при помощи st-link, отладку при помощи openOCD (это еще пишется)

не знаю можно ли здесь размещать ссылки на мой проект поэтому воздержусь...
VitGo
Posts: 3
Joined: 12.01.2021 04:32

Post by VitGo »

[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
uvviewsoft
Posts: 392
Joined: 01.12.2020 13:46

Post by uvviewsoft »

понятно, что хороший редактор получается. что для CudaText? вобщем то можно было бы задать все эти правила в regex лексера, но будет некрасиво (вся строка одним цветом, все токены) и медленно. так что пока оставляю.

есть еще вариант. делаем пустой лексер (без покраски, просто чтобы был). или берем subj. на него "вешаем" плагин и плагин должен красить. по событию on_change/ on_change_slow. искать кодом все что надо и делать Editor.attr().
uvviewsoft
Posts: 392
Joined: 01.12.2020 13:46

Post by uvviewsoft »

про лексер GNU AS. он нужен? вы будете его тестировать и говорить про недочеты?
и если да то дайте мне все его keyword lists. списки слов. 1) оп коды 2) reserved words. 3) registers.
Alexey
Posts: 1633
Joined: 05.10.2012 22:10

Post by Alexey »

Lexer Assembly GNU (for GNU Assembler) was published today.
It was tested on 2-4 files from github repos.
feedback is welcome.
Attachments
Screenshot from 2021-12-30 16-38-20.png
Post Reply