Программирую на C++ эмулятор Своего 8 битного процессора.
Придумал систему команд, а для команд нужен исполнитель. Собственно, его и делаю.
Основная идея: Разработать минемалистичный процессор, с точки зрения элементов и сложности. В идеале - когда-нибудь, может быть, воплотить в железе.
Текущий вариант чисто 8битный, регистры, адресное пространство. Соответственно, чтобы был хоть какой-то смысл его нужно сделать хотябы 8битным, ибо в 256 байт особо ничего не запрограммируешь.
Варианта решить 2
План - А) уместить в 256 байт программу-микрокод, котрая будет эмулировать процессор, но в 16разрядном виде.
Сделает процессор практически применимым
Не увеличит сложность реализации
- просадка в производительности
- попробуй-ка запихни это 256 байт
План-Б) Если не выйдет раширить архитектуру до 16 бит в “железном“ виде.
100% вариант
В эмуляторном виде почти бесплатно
Нет просадки по производительности
- Увеличит сложность\стоимость производства в железе в возможном будущем.
На данный момент есть рабочий ассемблер и рабочий эмулятор, в какой-то степени.
Спецификация, если можно это так назвать:
/*
* memory bytes
* registers:ra,rb,rc
* opcodes:
* [id203992|*one] line - one opcode
* oppcodes without argument size is 8bits,
* with argument 8bit registerSize bits
*
* hlt - stops programm(end)
* 8bits
*
* swp - swap ra with rb
* 8bits
*
* ld - loads byte from memory by addres from current value in ra, and
* writes byte value in to ra
* 8bits
*
* rast - sets to ra a value
* 8bits register_size
*
* pt - write from ra to mem
* 8bits registerSize
* ptrb - wirtes from ra by adr in rb
* 8bits
*
* sum -
* summ ra rb and writes result to ra,
* writes to rc(caryout) - 1 if owerflowed or 0 else.
* 8bits
*
* cmp - compares ra and rb. Writes result to ra
* 0x00 - equals
* 0xff - else
* 8bits
*
* jmp - jump to adress in ra. if adr == 0 then nop
* 8bits
*
* and - binary ra & rb -> ra
* 8bits
*
* or - binary ra | rb -> ra
* 8bits
*
* not - binary inversion rb -> ra
* 8bits
* * one bit shfts
* * from ra to ra
* * new bits is 0
* rsh - binary right shift
* 8bits
* lsh - binary left shift
* 8bits
*
* cout - loads value from caryout(rc) to ra.
* Value caryout(rc) register is not change.
* 8bits
* nop - no operation
* 8bits
* —----------------------------------------------------------------
* programm struct
* : - label
*
* .data - palces after end of programm.
* Partition for constants and variables
*
* : - refs to adress with value
*
* exam.
* :my_var
* 42
*
* : - refs to adress with first byte of value
* {string value} - 0 terminated, byte sequence(C-str)
* String expands to 0-terminated byte sequnce
*/
/* compilation.
* command max len 16bits. 8bits - oppcode
* 8bits arg for ld\pt oppcode ex. ld
* For values look at enum class OppCodes : std::uint8_t
*/
30 views
3199
1221
4 months ago 01:00:18 1
ОНИ ДЕРЖАТ тебя ЗА ПРИЧИННОЕ МЕСТО. Вся правда о МАСС МЕДИА в России
4 months ago 00:33:19 1
Как песни программируют жизнь / Знай наших / 03.
4 months ago 00:08:27 1
Как приучить кошку к унитазу. Ошибки
4 months ago 00:41:23 1
Правда о следующей эволюции человечества! Матрица не сможет удерживать таких людей..
4 months ago 00:21:20 1
Реальное Собеседование на Junior Backend разработчика — Это нужно знать!
4 months ago 02:04:29 1
А как же любовь? Арсен Маркарян
4 months ago 00:07:16 16
Принцип EAFP в Python, работа с исключениями в Python. Применение принципов Zen of Python
4 months ago 00:05:49 1
Любовь к себе. Уверенность в себе. Самопринятие. Самоуважение. Скрытые аффирмации. Саблиминал.
4 months ago 00:32:17 5
Как программируют неграмотность наших детей. Людмила Ясюкова.
5 months ago 00:21:05 1
Сергей Волков | Коллекция современного искусства | Пока все дома у Антона
5 months ago 02:04:44 1
7 привычек программирующих людей на бедность. ВИРУС БЕДНОСТИ
5 months ago 00:20:01 1
Википедия-бот на Python.
5 months ago 00:26:36 1
Создание и настройка виртуальных машин на компьютере (VirtualPC).
5 months ago 00:26:36 2
Как Программируется Реальность. Дубликаты и Параллельные ветки, которые МЕНЯЮТ ЖИЗНЬ
5 months ago 00:10:32 1
ЗАЧЕМ ЯПОНЦЫ ВЫРАЩИВАЮТ ЛОПУХ ? 5 СВОЙСТВ О КОТОРЫХ НЕ ЗНАЮТ МНОГИЕ ВРАЧИ !
5 months ago 00:07:50 1
Как решить задание №12 за НЕСКОЛЬКО МИНУТ? | ИНФОРМАТИКА ЕГЭ 99 БАЛЛОВ 10 КЛАСС
5 months ago 00:07:04 1
Как решить САМОЕ СЛОЖНОЕ задание №1? | ИНФОРМАТИКА ЕГЭ 99 БАЛЛОВ 10 КЛАСС
5 months ago 00:27:48 1
Делаем электронную игру на микроконтроллере и языке программирования Micro Python
5 months ago 00:28:07 1
Женское счастье. Имрам о том, что лежит в основе женской гармонии