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