Clingy8 — это 8-битный процессор с аккумуляторной архитектурой и поддержкой прямого доступа к памяти и внешним интерфейсам.
Процессор имеет следующие компоненты:
-
8-битная шина данных
-
16-битная шина адреса (64 КБ памяти)
-
Аккумулятор (ACC) — регистр для выполнения операций
-
Регистры команд и флагов (Zero, Carry, Negative)
-
Поддержка адресации памяти и внешних интерфейсов
Команды состоят из:
ОПЕРАЦИЯ + ИНТЕРФЕЙС + ОПЕРАНД
Примеры:
+:01 ; Добавить к ACC значение из ячейки 01
<:10 ; Загрузить в ACC значение из ячейки 10
>:20 ; Сохранить ACC в ячейку 20Операция |
Описание |
|
Сложение ACC и значения |
|
Вычитание из ACC |
|
Умножение ACC |
|
Деление ACC |
|
Запись значения в ячейку |
|
Загрузка в ACC |
|
Сохранение ACC |
|
Ничего не делать ( |
|
Остановка программы ( |
Интерфейс |
Описание |
|
Лента памяти |
|
Ячейка на выбранной ленте |
|
Немедленное значение (константа) |
Интерфейс выбирается один раз и далее используется во всех операциях до следующей смены интерфейса.
Пример работы с RAM:
@00 ; Выбираем RAM
=:10#05 ; Устанавливаем 5 в ячейку 10
<:10 ; Загружаем из 10 в ACC
+:11 ; Добавляем значение из 11
>:12 ; Записываем результат в 12Метка начинается с & и обозначает точку в коде.
Переходы работают с адресами меток.
Символ |
Описание |
|
Определение метки |
|
Условный переход (если ACC == 0) |
|
Безусловный переход |
Пример:
&start
<:00
+:01
>:00
-#0A
~start
!После компиляции:
&0x80
<:00
+:01
>:00
-#0A
~0x80
!Программа, вычисляющая последовательность Фибоначчи:
@00 ; Работаем с RAM
=:10#00 ; F(0) = 0
=:11#01 ; F(1) = 1
=:12#0A ; Количество чисел = 10
&loop
<:10 ; Загружаем F(n-2)
+:11 ; Складываем с F(n-1)
>:13 ; Записываем в F(n)
<:11 ; Загружаем F(n-1)
>:10 ; Сдвигаем F(n-1) -> F(n-2)
<:13 ; Загружаем F(n)
>:11 ; Сдвигаем F(n) -> F(n-1)
-#01 ; Уменьшаем счётчик
~loop ; Повторяем, пока счётчик не 0
!Компилятор заменяет метки их адресами. Пример таблицы меток после компиляции:
Адрес |
Метка |
|
|
|
|
Меткам соответствуют реальные адреса в памяти, куда процессор делает переход.
Clingy8 © 2025 by atarwn is licensed under CC BY-SA 4.0. To view a copy of this license, view LICENSE file or visit https://creativecommons.org/licenses/by-sa/4.0/