Skip to content

Brainfuckv2/Clingy8-spec

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 

Repository files navigation

Спецификация процессора Clingy8

Clingy8 — это 8-битный процессор с аккумуляторной архитектурой и поддержкой прямого доступа к памяти и внешним интерфейсам.

Архитектура

Процессор имеет следующие компоненты:

  • 8-битная шина данных

  • 16-битная шина адреса (64 КБ памяти)

  • Аккумулятор (ACC) — регистр для выполнения операций

  • Регистры команд и флагов (Zero, Carry, Negative)

  • Поддержка адресации памяти и внешних интерфейсов

Формат команд

Команды состоят из:

ОПЕРАЦИЯ + ИНТЕРФЕЙС + ОПЕРАНД

Примеры:

+:01   ; Добавить к ACC значение из ячейки 01
<:10   ; Загрузить в ACC значение из ячейки 10
>:20   ; Сохранить ACC в ячейку 20

Операции

Операция

Описание

+

Сложение ACC и значения

-

Вычитание из ACC

*

Умножение ACC

/

Деление ACC

=

Запись значения в ячейку

<

Загрузка в ACC

>

Сохранение ACC

_

Ничего не делать (NOP)

!

Остановка программы (HALT)

Интерфейсы

Интерфейс

Описание

@

Лента памяти

:

Ячейка на выбранной ленте

#

Немедленное значение (константа)

Интерфейс выбирается один раз и далее используется во всех операциях до следующей смены интерфейса.

Пример работы с 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
!

Обработка меток

Компилятор заменяет метки их адресами. Пример таблицы меток после компиляции:

Адрес

Метка

0x80

start

0x92

loop

Меткам соответствуют реальные адреса в памяти, куда процессор делает переход.

Лицензия

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/

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published