68a69,81 > > ## 2025-12-09 18:00 MSK > > И RTC (с доступом через CMOS), и PIT работают на Pocket 386 с запрещёнными прерываниями ЦП. Это радует, можно профилировать и оценивать результат как длительных операций, так и довольно коротких. > > Начал я с того, что вспомнил, что видел один твик в ilo-vm/ilo.py. В виртуальной машине ilo все адресуется четырехбайтовыми ячейками, а инструкции занимают один байт. Поэтому в каждую ячейку "упаковывается" четыре инструкции, а затем исполняется каждый байт. Но в качестве оптимизации можно рассматривать одну ячейку как самостоятельную инструкцию. > > Я собрал статистику по исполняемым четырехбайтовым "инструкциям" на момент загрузки Konilo. И с отрывом в десятичный порядок по количеству исполнений (1`944`047 раз) лидирует 0x04060205. То есть pu du po sw. А это обычное слово OVER в классическом Forth: > ``` > : OVER ( a b -- a b a ) >R DUP R> SWAP ; > ``` > > И суть оптимизации тут вполне очевидна: вместо того, что бы перекидывать ячейки между двумя стеками моя нативная реализация сделает это всё, используя регистры центрального процессора.