Перейти к содержимому

Как работает процессор

Программа идёт сверху вниз и начинается заново. Строки считаются с нуля, скорость мерится инструкциями за тик

просто

Процессор не запускают и не останавливают: пока он стоит и в нём есть программа, он её выполняет. Инструкции идут сверху вниз, одна за другой; дошёл до последней — начал сначала. Так работает почти всё, что пишут на mlog: это не сценарий, который отработал и закончился, а бесконечный цикл.

тик 0
Установить0
=
Операция1
=
@counter0number
скоростьnullnull
итерацийnullnull

Нажимайте «шаг»: рамка проходит обе строки и возвращается наверх, а итераций каждый раз прибавляется на единицу.

Первая инструкция — нулевая, вторая — первая. Это видно везде: в номерах слева от блоков, в переходах, в @counter.

Время в игре идёт тиками — шестьдесят в секунду. За один тик процессор выполняет не одну инструкцию, а столько, сколько положено его виду:

Процессор Инструкций за тик
микропроцессор 2
логический процессор 8
гиперпроцессор 25

Это число лежит в @ipt — первая строка примера кладёт его в переменную. Отсюда простое следствие: программа из двадцати инструкций на микропроцессоре проходит итерацию за десять тиков, то есть шесть раз в секунду, а на гиперпроцессоре — семьдесят пять раз.

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

Кнопка «шаг» в примерах выполняет одну инструкцию, а не тик: по тику ход программы не разглядеть, особенно на гипере.

В окне переменных есть @counter — номер инструкции, которую процессор выполнит следующей. Пока достаточно знать, что он там есть: по нему видно, где программа сейчас находится.

Счётчик не только показывает — в него можно писать, и запись в него это переход. Обычно переходы пишут инструкцией jump, а счётчику как переменной отведён свой урок: «@counter: переход как значение».

Неофициальный проект, с Anuke не связан. Спрайты, шрифты и переводы Mindustry © Anuke, используются по GPL-3.0; Fira Code — по OFL-1.1. Код сайта — GPL-3.0.