The post has been translated automatically. Original language: Russian
This week we got another important result: for the first time, a Sekura JS program went all the way from source text to execution on a real Memora8 processor.
Prior to this, a significant part of the development was tested in the software model. This allowed debugging the language, compiler, and command set, but the main question remained whether the entire chain would work on a real device.
For the first launch, we used a single Memora8 processor on Artix-7.
The program was compiled into an executable object, uploaded to the board over UDP and run no longer in the model, but on the processor in the FPGA.
The execution was controlled step by step. We could see how the processor goes through the program, changes the state, and reaches the final message.:
LANGUAGE TESTS OK
The text of this message is not important to us.
For the first time, the entire chain worked simultaneously: the Sekura JS language, the compiler, the executable format, the program download, the Memora8 processor, and the exchange with the board over the network.
Previously, each of these components could be checked separately. Now they have met in the same working system.
This also changes the nature of further development.
Language and compiler errors can now be checked not only in the software model, but also in the physical execution. And the results of formal SJV verification can be compared with the behavior of the same program on a real processor.
The first closed path turned out:
write a program — compile — check — load — execute on the processor — observe the result.
For its own language and its own computing architecture, this is an important point: the system ceased to exist only in parts and for the first time it was fully operational.
На этой неделе мы получили ещё один важный результат: программа на Sekura JS впервые прошла полный путь от исходного текста до выполнения на реальном процессоре Memora8.
До этого значительная часть разработки проверялась в программной модели. Это позволяло отлаживать язык, компилятор и набор команд, но оставался главный вопрос: будет ли вся цепочка работать на настоящем устройстве.
Для первого запуска мы использовали один процессор Memora8 на Artix-7.
Программа была скомпилирована в исполняемый объект, загружена на плату по UDP и запущена уже не в модели, а на процессоре в ПЛИС.
Выполнение контролировалось пошагово. Мы могли видеть, как процессор проходит программу, изменяет состояние и доходит до итогового сообщения:
LANGUAGE TESTS OK
Для нас важен не сам текст этого сообщения.
Впервые одновременно сработала вся цепочка: язык Sekura JS, компилятор, исполняемый формат, загрузка программы, процессор Memora8 и обмен с платой по сети.
Каждый из этих компонентов раньше можно было проверять отдельно. Теперь они встретились в одной работающей системе.
Это также меняет характер дальнейшей разработки.
Ошибки языка и компилятора теперь можно проверять не только в программной модели, но и на физическом исполнении. А результаты формальной верификации SJV можно сопоставлять с поведением той же программы на реальном процессоре.
Получился первый замкнутый путь:
написать программу — скомпилировать — проверить — загрузить — выполнить на процессоре — наблюдать результат.
Для собственного языка и собственной вычислительной архитектуры это важная точка: система перестала существовать только по частям и впервые заработала целиком.