Да, я, кажется, в курсе: Все эти конвейеры, суперскалярности и пр…
Речь идёт именно о чистом 8-битном CISC (без суперскалярного RISC-ядра внутри).
И, теоретически, его на ИМС ТТЛ собрать можно.
Конечно, он будет побольше схемы того же «Микро-80», но, как можно заметить, архитектура - масштабируема в обе стороны: Можно выполнить и с 4-разрядными РОН на К1533ИР39…
GCC ещё в прошлом веке компилировал для виртуальной машины с 4G регистров, а потом отображал виртуальные регистры на физические, а что не влезло -- на стек. Сейчас в любом ведрофоне Dalvik с той же концепцией. А зачатки -- это ещё доисторический ископаемый SPARC, а точнее -- Berkeley RISC Machine, скоро полвека ей ужё будет.
Историю надо знать.
абсолютно НЕ важно какая разрядность и вид команд - от слова СОВСЕМ. к примеру кеш-память применяли как минимум в 70г.
Сейчас я над этим и работаю (в зомби-режиме - жарко очень), так как Гугл-Силикон пока ещё принимает заявки…
А с другой стороны, как бы там ни было, а тема посвящена именно Концептуальному Процессору!
Т.е. процессор разрабатывается именно как с дружелюбным машинным кодом, в стиле WYSIWYG (что видите - то имеете) жанра "Акына" (что вижу - то и пою)…
Он, процессор, не задумывался для полёта в космос.
А задумывался так, чтобы даже домохозяйка могла бы разобраться в нём.
(Правда, префиксы и маргиналы как-то уж сильно всё подзапутали, но концепцию не нарушают.)
Только в свете новых открытий (маргиналов и безразмерного регистрового файла) ещё JavaScript-эмулятор подтянуть надо, так как это какой-то «8-битный мэйнфрейм» получается (привет, CRAY!)…
P.S.: Те, кто «в теме» (дамп-кодирования) - поймут и тему подхватят…А большего и не ожидается…Код:0000 DD D3 08 3F LEA D3,TEXT 0005 F8 18 INT F818 0007 00 HLT 0008 48 45 4C 4C 4F 00 TEXT: DB "HELLO",0
Эмулятор на BASH: BashEmu.zip
(Клавиша F7 - строчный ассемблер)
Последний раз редактировалось Alikberov; 04.07.2023 в 08:05. Причина: закачал эмулятор на BASH
Те, кто «в теме» (дамп-кодирования) - поймут и тему подхватят…Для тех, кто дружит с Raspberry Pi и его богатым периферийным интерфейсом, был написан черновой вариант эмулятора на BASH: BashEmu.zipКод:0000 DD D3 08 3F LEA D3,TEXT 0005 F8 18 INT F818 0007 00 HLT 0008 48 45 4C 4C 4F 00 TEXT: DB "HELLO",0
Конечно, эмулятор ещё не отлажен и не полный. Но базовые принципы понять позволяет.
- F1 - Справка
- F2 - Режим "классический" и "стандартный"
- F3 - Один шаг эмуляции/отладчика
- F4 - Редактор дампа ОЗУ (встроенный)
- Shift+F4 - редактор дампа файла ПЗУ (внешним hexcurse)
- F5 - Сброс эмуляции
- F6 - Исполнение кода до команды HLT
- F7 - Строчный ассемблер с записью кода команды на текущую позицию IP
Ограниченно и с глюками поддерживает указатели и маргиналы.
Но, как понимаете, Bash - не среда для разработки подобных эмуляторов: Следует использовать Python хотя бы.
Эмулятор писался с целью глубокого изучения самого Bash для большего его освоения.
murgatroid_79(10.07.2023)
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Благодаря расширению доступности нейросетей DeepSeekChatGPT в этом году удалось концептуально продвинуться.
Прежде всего, нейросеть подобрала наиболее подходящее наименование архитектуры.
WYSIWISC - What You See Is What It Should Compute (Что Видите, То Вычисляете)
Аналогично WYSIWYG, но более низкого фундаментального уровня.
И помогла упаковать всё описание процессора в шаблон:Можно заметить, что в отличии от множества известных архитектур (INTEL, MOTOROLA, SUN), которые так кратко не уместишь в описательный шаблон, здесь WYSIWISC описывается практически полностью (за исключением префиксов).Код:Условные сокращения: 1. io = 0xio, где i, o — BCD. 1.1. HLT/JMP (= 0x00). 1.1.1. Без префикса: IP → D0, IP ← 0x0000 (вызов БСВВ). 1.1.2. С префиксом `#Di+o`: D0 ← IP, IP ← Di+o (JMP). 1.2. Префиксы `#Di+o` (`[Di+o]`) (≠ 0x00). 2. TS = 0xTS, где T, S ∈ {0xA, 0xB, 0xC, 0xD}. 2.1. TR = TS, но S ≠ T. 2.2. TN = TS, но S = T. 3. Tn = 0xTn допускается после TS, если T совпадает с T из TS. 3.1. Tm = Tn Tn ... допускается после TS, если T совпадает с T из TS. 3.2. Выбирает T за основной операнд. 4. Rn = 0xRn допускается после TS, если R ≠ T из TS. 4.1. Rm = агрегация Rn Rn ... допускается после TS, если R ≠ T из TS. 4.2. Загружает R в основной операнд. 5. vF → Загружает Nv в T, если контекст TN. 5.1. wF = агрегация vF vF ... → Загружает Nw в T, если контекст TN. 6. vF → Сохраняет T в Rv, если контекст TR. 7. vU = 0xnU, где v — BCD, U ∈ {0xA–0xE}. 7.1. v → индекс S в контексте TS. 7.2. если T в TS = A и Rn = A0, U → {INC, DEC, CLR, SET, EOR} 7.3. если S в TS = A, 0U → {INC, DEC, CLR, SET, EOR} с условием CF 7.4. в остальных случаях U → ADC, SBB, AND, OR, EOR Архитектура: 1. Регистр A0 → PSW. 1.1. Биты 0, 1, 2, 3 → флаги ZF/DF, CF, VF/BF, NF/AF. 1.1.1. Без префикса - управление флагами. 1.1.1.1. 0xCE → CLC (Carry Erase) 1.1.1.2. 0xCF → CMC (Carry Flip) 1.1.1.3. 0xAE → CLA (Absolute Erase) 1.1.2. С префиксами - управление потоком. 1.1.2.1. 0x12 0xCE → JNC #D1+2 1.6. Не операнд АЛУ. 1.6.1. TS = AX, Rn = A0 → vU унарная (INC, DEC, CLR, SET, NOT). 1.6.2. TS = XA → 0U условная унарная (INC, DEC, CLR, SET, NOT). 2. Регистр D0...D9 2.1. Регистровые пары B0C0...B9C9 Стек: 1. Реализуется пользователем, указатель — любой удобный регистр. 2. D0 ← IP при JMP/HLT, подпрограммы должны сохранять D0. 3. RET = JMP #D0+1.
С кодированием префиксов нейросеть так и не смогла справиться, хотя логика там не такая сложная (онлайн вариант и для эмулятора DELEGATE.RKR.zip).
Но, нейросеть помогла подобрать условному термину маргиналы более понятный - делегаты.
Делегат
Говоря простым языком,делегат - это удалённый префикс, который подставляется в текущую инструкцию по ссылке, адресуемой любой регистровой парой.
Нейросеть как бы и понимает общие принципы работы делегатов, но не может в своём опыте (БД) найти нечто подобное в известных ей десятках архитектур.Код:90 90 80 80 76 54 32 10 00 DEF 98#D7+D5+D3+D1+6420 LEA D98,[<D7+D5+D3+D1+6420>] 12 34 56 78 90 A1 MOV #D1+D3+D5+D7+D9+24680,A1 MOV [D1+D3+D5+D7+D9+24680],A1 90 90 80 80 A2 MOV 98#,A2 MOV [<D7+D5+D3+D1+6420>],A2 90 90 80 80 12 34 56 78 90 A3 MOV 98#D1+D3+D5+D7+D9+24680,A3 аналогично MOV ES,D98 и MOV ES:[D1+D3+D5+D7+D9+24680],A3 90 90 80 80 12 34 56 78 90 CE JNC 98#D1+D3+D5+D7+D9+24680 MOV PSW,[<D7+D5+D3+D1+6420>] и JNC #D1+D3+D5+D7+D9+24680
Рассмотрим на примерах:
- «HLT #D7+6» → «JMP #D7+6» → Останов текущей цепочки инструкций с ветвлением на вектор
- «HLT 8#D7+6» → «DEF 8#D7+6» → Операция останова работает как предопределение регистра - «D8 = IP»
- «HLT 8#» → «DBG 8#» → Операция останова работает как прерывание на отладку удалённой инструкции
- «MOV A9,#D7+6» → «MOV A9,[D7+6]» → Чтение ячейки локальной памяти
- «MOV A9,8#» → «MOV A9,[CALL D8]» → Чтение ячейки по вектору, который предопределил «DEF» (аналогично «DBG», но выполняется только префикс)
- «MOV A9,8#D7+6» → «MOV A9,D8:[D7+6]» → Обращение к сегменту глобальной памяти
В общем, понять более-менее можно, думаю.
P.S.: Как видите, всё достаточно необычно и нейросеть спотыкается по любому пустяку. Просит показать ей 100500 примеров как надо и как не надо кодировать, чтобы обучиться данной архитектуре.
Электроника КР-03; ZX-Spectrum "Ленинград-48"; Atari-130XE; Поиск-1...
andrews(12.06.2025)
DeepSeek хорошо работает как помощник и интересный инструмент в умелых руках. Вопрос только в том, что когда Вы ее чему-то новому научите не станет ли это доступно всем?
Кстати DeepSeek довольно хорошо умеет писать кросс-ассемблеры и простые консольные симуляторы. Другое я пока не успел попробовать.
Последний раз редактировалось andrews; 12.06.2025 в 13:18.
Да, это мой первый опыт тесного взаимодействия с нейросетью (как динозавр, узнал о DeepSeek из выпуска новостей по телевизору).
Полагаете, идею могут украсть?Вопрос только в том, что когда Вы ее чему-то новому научите не станет ли это доступно всем?
В DeepSeek нету групповых сессий.
Я пытался на РК синтезатор голоса на уровне гласных реализовать под четыре форманты.Кстати DeepSeek довольно хорошо умеет писать кросс-ассемблеры и простые консольные симуляторы. Другое я пока не успел попробовать.
Да, нейронка здорово помогла ответить на вопросы, которыми мучался лет 25.
Но вот с WYSIWISC она не справляется. В частности, LLVM backend под WYSIWISC получается слишком сложным из-за множества нюансов.
Да и контекст постоянно теряет.
С префиксами и делегатами - вообще всё слишком сложно.
Конкретно под тему - разработал/отладил узел обработки префиксов.
P.S.: Вообще, прожект продвигается крайне тяжело.
Очень много противоречий в нём: Архитектура - 8-битная, адресация - 16-битная или 32-битная с делегатами.
Например, нейросеть не представляет принцип т.н. разыменования некоторых указателей, что мешает разработке полного эмулятора.
Электроника КР-03; ZX-Spectrum "Ленинград-48"; Atari-130XE; Поиск-1...
не проверял, но вот входил сам под разными аккаунтами и во второй раз начинал с результатов, полученных после многих итераций на первом аккаунте и DeepSeek продолжал уже не с "нуля" и довольно быстро пришел к требуемому результату.
- - - Добавлено - - -
естественно, если вы предлагаете что-то новое, то он уясняет не сразу, а после нескольких итераций. Иногда, кстати, зацикливается, и надо проявить изобретательность, чтобы заставить его двигаться вперед. На русском языке надо быть предельно точным и однозначным в общении с ним. На английском не пробовал, так как не владею им на том же уровне, что русским.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)