nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 16 Jul 2019 21:25



Reply to topic  [ 4 posts ] 
x80 - 8-битный CISC 
Author Message
Fanat
User avatar

Joined: 12 Apr 2011 21:43
Posts: 75
Location: Tashkent
Reply with quote
Сначала я пробовал адаптировать исходные ресурсы готового эмулятора.
Но вскоре написал свой собственный.

Затем используя Icarus Verilog начал разрабатывать с чистого листа.
Облачный x80 хоть и исполняет несколько инструкций, но по листингу можно видеть, что там я запутался.
Всё-таки Verilog я знаю куда хуже, чем стандартные ЯВУ…

Почему-то моделировать схему графически легче, чем Verilog листинг.
Во-первых, масштаб схемы можно изменять и визуально охватывать целиком всё. Это нельзя сделать с листингом, так как текст воспринимается всё же иначе. Даже несмотря на продвинутые редакторы с подсветкой синтаксиса и выделения модулей.
Во-вторых, путь сигнала графически просматривается моментально. Тогда как в листинге именованные проводники, даже с подсветкой, прослеживаются хуже.
В-третьих, проектирования цифровых узлов я освоил в тетрадках ещё в школе. Но обычную радиоэлектронику не одолел, так как цифра - куда проще в плане входа-выхода.
К тому же, программирование я освоил позже, чем сборку цифровых узлов с мигалками и генераторами звука или растра на ТВ.

Идеология
Процессор x80 является подправленным i8080A в плане таблицы команд.
Здесь я описывал задумку. Но, повторюсь…
Байт-код x80 более интуитивно понятный, чем у совместимых процессоров. Прежде всего, для кодирования программ голым дампом, так как ассемблер или Си - роскошь в моём случае.
У x80 код инструкций более прозрачен и шестнадцатеричные нибблы говорят сами про инструкцию.
В отличии от i8080/z80, x80 имеет только 8-битные константы поля операндов инструкции. Команды ветвления только короткие.
Система команд разрабатывалась не в угоду упрощения аппаратной реализации в перспективе, так как в XXI веке достаточно всяческих микроконтроллеров с самой разнообразной архитектурой. И как-то не красиво уже в наше время уродовать систему команд ради укорочения какого-то проводочка где-то в дешифраторе.

Префиксы
Программисту доступно 7 префиксов на прикладном уровне и дополнительный префикс на системном уровне.
Префиксы кодируются насквозь кодами 11h, 22h, 33h, 44h, 55h, 66h, 77h. Это легко запомнить и декодировать аппаратно.
Системный префикс имеет код 00h, что необычно. Для прикладной программы код 00h - операция останова «hlt». Тогда как для операционного кода останов не требуется и открывается восьмой префикс. Это единственная привилегированная операция. Но логически, если приложение прыгнуло в адрес занулённой памяти, то будет однозначный моментальный останов.

Регистры
В состав РОН входят 7 8-битных регистров - AL/BL/CL/DL/BH/CH/DH и ячейка памяти [BX] (аналог M от i8080/z80)..
Имеются и регистровые пары - BX/CX/DX. А также и указатели - SP/BP/SI/DI.
Тем самым, в распоряжении программиста имеется почти весь набор регистров x86.

Прерывания
Имеется 10 инструкций программного прерывания с кодами F0…F9, что легко запомнить.
Они легко расширяются до 80 при помощи префиксов: 11 F0…F9, 22 F0…F9, 33 F0…F9, 44 F0…F9, 55 F0…F9, 66 F0…F9, 77 F0…F9.

Константы
Коды операций 80…BF загружает непосредственную константу в поле операндов инструкции. Аппаратно схему дешифратора это упрощает.
В комбинации с префиксом команда может иметь до трёх байтов:
Code:
   04   |MOV AL,[BX]   ; Загрузка произвольной ячейки памяти в регистр #4
   A4 CE|MOV AL,0xCE   ; Загрузка непосредственной ячейки памяти в регистр #4
55 A4 CE|MOV AL,[BX-50]; Загрузка индексируемой ячейки памяти в регистр #4

Можно заметить, что добавление префикса несильно меняет логику команды.
В отличии от z80 с двумя индексными регистрами IX/IY, здесь за индексный регистр можно указывать любой из 7, почти как в x86.

Ветвления
Кодирование операций ветвлений сквозное и имеет коды BA…BF, что можно читать, например, BC как Branch by Carry.
Размах перехода у этих команд ±127 байтов, но с помощью 7 префиксов размах расширяется до ±1023 байтов.
Чтобы совершить прыжок на абсолютный адрес, необходимо его загрузить в стек и выполнить команду RET.

Постфиксы
В состав команд ветвления входят ситуации, когда команда условного перехода замыкается на себя, провоцируя бесконечный цикл.
Аппаратно на уровне загрузки кода такие случаи исключаются и преобразовываются в особые коды префиксов.
Так, «BC FE» зациклена на себя при переносе - «JC $». Однако дешифратор предотвращает это, генерируя префикс #14.
Тем самым, «BC FE» уже из команды ветвления интерпретируется как «CLC».

Аппаратная реализация
Первоначально может показаться, что аппаратно загружать в буфер инструкции из памяти, предусматривая префиксы, постфиксы и «hlt» как дополнительный префикс в режиме ядра - довольно непросто.
Однако, используя LogiSim, удалось разработать достаточно компактную схему, выполняющую все основные функции по корректной загрузке команды любой длины в буфер:

P.S.: Здесь я тренировался своим RISC, приобретая опыт работы с памятью.
Если активно заниматься проектом, можно воплотить этот x80 в рамках визуального симулятора реального времени LogiSim. Что предоставит некоторый опыт для дальнейшего перевода проекта на уровень Verilog…


Attachments:
File comment: Парсер x80-инструкций
x80-parser.gif
x80-parser.gif [ 482.08 KiB | Viewed 545 times ]


Last edited by Paguo-86PK on 01 Apr 2019 07:17, edited 1 time in total.

30 Mar 2019 04:52
Profile WWW
Fanat
User avatar

Joined: 12 Apr 2011 21:43
Posts: 75
Location: Tashkent
Reply with quote
reserved


30 Mar 2019 04:53
Profile WWW
Fanat
User avatar

Joined: 12 Apr 2011 21:43
Posts: 75
Location: Tashkent
Reply with quote
reserved


30 Mar 2019 04:54
Profile WWW
Fanat
User avatar

Joined: 12 Apr 2011 21:43
Posts: 75
Location: Tashkent
Reply with quote
reserved


30 Mar 2019 04:55
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 4 posts ] 

Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.