1.2 Hello, World!
Итак, после того, как ToicIDE установлен, можно приступать к написанию вашей первой программы. По традиции напишем небольшую программу, которая напечатает “Hello, World!” в строке вывода среды. Для большей информативности добавим в код немного дополнительных элементов, описывающих особенности платформы. Данный пример с иллюстрациями можно посмотреть [по ссылке].
Первым делом нужно создать проект, вызвав в среде Project->New. В диалоговом окне нужно указать желаемое имя проекта, выбрать HAL-драйвер Emulator.
В созданном проекте введём код:
var main() {
var i = 0;
while (1){
sprintf(&PC.TX, "Hello, World! %d", i++);
delay(1000);
}
return 0;
}
Теперь давайте разберёмся, как же работает наша новая “Hello, World!"-программа.
Первым делом, разберем следующий код:
var main() {
}
Этот текст определяет функцию. Функция main - это т.н. точка входа в программу (если читатель уже знаком с такими языками как C, C++, Java, то данная конструкция должна быть привычна). Также обратите внимание, что содержимое функции обрамляется фигурными скобками. { } (также как и в Си, Java, Go, Rust). Эти скобки обязательны для описания функций. Для повышения читаемости кода рекомендуем размещать открывающую фигурную скобку { на той же строке, что и наименование функции и отделять её одним пробелом. Вот так: var main() {.
Содержимое функции main:
var i = 0;
Объявляем локальную переменную i. В TOIC все переменные имеют один тип usize (обычно равный разрядности платформы, например, uint32), который называется var.
while (1){
}
Тут используется классический си-цикл while.
sprintf(&PC.TX, "Hello, World! %d", i++);
sprintf - это одна из встроенных в язык функций, которая очень похожа на аналогичную функцию из языка Си, где в качестве буфера для записи мы используем регистр периферии “ПК” для передачи данных в пк. Подробнее об этом в разделе 9.1 HAL XML.
delay(1000);
Еще одна встроенная функция, которая задерживает исполнение кода на заданную величину. Размерность единиц определяется имплементатором. В эмуляторе это миллисекунды, поэтому delay(1000) остановит программу на секунду.
Компиляция и исполнение - это два различных этапа работы.
Прежде чем исполнить программу в устройстве (в нашем случае в эмуляторе), необходимо скомпилировать её с помощью встроенного в среду ToicIDE компилятора. Для этого нужно нажать на кнопку “Compile” в виде накидного ключа. В результате мы получаем байт-код, который может исполняться в любом устройстве TOIC, независимо от его платформы, способа получения и хранения этой программы. Для запуска необходимо нажать на кнопки “Load” и “Run”. Так как наш проект настроен на работу с эмулятором, то в поле для входящих сообщений мы увидим искомую строку.
PC.TX - специальный HAL регистр “TX канал устройства PC”, в который мы помещаем данные, чтобы они отправились на ПК. В реальном контроллере это, как правило, выделенный канал связи с ПК: UART, USB или беспроводной интерфейс. Подробнее о HAL регистрах в разделах 9.2-9.3