|
nedoPC.orgElectronics hobbyists community established in 2002 |
|
Дешифрация кода команды CPU
Author |
Message |
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Я вот смотрю, все кто делает самодельный ЦПУ для совместимости с имеющимся
софтом добиваются совместимости с 6502 и ПК "Коммодор".
Согласен с таким решением - сильно всё упрощает.
Я хочу попробовать добиться совместимости с 8080 хотя бы частично,
то есть задейстовать хотя бы 32 команды, похожие на RISC, но чтоб было
совпадение по коду.
Начал прикидывать вариант дешифратора кода команды. Казалось мне что всё
там логично, когда, к примеру, команды разбираются программно в эмуляторе,
а тут выписал их побитно, сгруппировал какие биты за что отвечают, и что-то
не вижу явной логики - по какому признаку коды разбить на группы.
Кто-нибуть решал подобную задачу?
PS. Также, судя по всему, под управлением этого процессора (6502) работает главный злодей в фильме "Терминатор". Это заметно, когда показывается картинка "глазами робота": при этом на экране, помимо прочей информации, отображается область с листингом ассемблерной программы, содержащим характерные для 6502 команды. Удивительно, на что способен 6502, если его хорошенько разогнать!
Last edited by Lavr on 19 Jan 2011 12:39, edited 1 time in total.
|
18 Jan 2011 08:00 |
|
|
b2m
Devil
Joined: 26 May 2003 06:57 Posts: 873
|
Возможны следующие варианты:
D7 D6
- делят на 4 группы команд (можно сказать однотипных)
D5 D4 D3
- регистр, где данные модифицируются
- регистровая пара (D5 D4) в этом случае D3 будет относиться к коду операции
- код условия в командах перехода, вызова процедур или возврата
D2 D1 D0
- регистр, откуда берутся данные
- код операции
Есть, конечно, и исключения из правила, когда все 8 бит это код операции.
_________________Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
|
18 Jan 2011 12:31 |
|
|
b2m
Devil
Joined: 26 May 2003 06:57 Posts: 873
|
Можно заметить ещё особенности:
команды вида 11ххх00х выбирают из стека (исключение PCHL и SPHL)
команды вида 11ххх10х кладут в стек (ещё правда и 11ххх111)
команды 11ххххх0 (кроме 11ххх110) выполняются по условию
команды 11ххх010 и 11ххх100 имеют двухбайтовый аргумент - новое значение PC (переход), ещё правда и 1100х011 и 11хх1101
в командах 00ххх110 и 11ххх110 есть однобайтовый аргумент для АЛУ
АЛУ используется в 10хххххх и 11ххх110
в командах 00хххх11 и 11хххх11 бит D3 участвует в коде операции
брать SP или PSW решается одним из старших двух бит команды
Можно созерцать таблицу команд до бесконечности
_________________Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
|
18 Jan 2011 12:54 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Чтобы не быть голословным, я вот такую таблицу созерцаю до посинения пупа.
Я как раз по D7,D6 поделил её на четыре части, а вот дальше...
С исключениями тут, кажется, сложнее, чем с правилами.
(адреса и аргументы 0000Н и 00Н приписаны, чтоб столбец кодов можно было компильнуть для проверки)
PS. Таблицу сократил, т.к. всё разобрали.
Last edited by Lavr on 19 Jan 2011 09:06, edited 1 time in total.
|
19 Jan 2011 02:54 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
2_HardWareMan:
Моцк свой иногда включай и читай об чем сабж... Разрешаю, так и быть, тебе юзать твою таблицу до пенсии, речь не об ней, хотя её все видели, когда ты ещё в кружок не умел ходить...
http://sgu-wap.narod.ru/PIC8080/KP580BM80A.htm Да :3
ДАЛЕЕ - ПО САБЖУ: дешифратор кода команды
Если регистрам A, B, C, D, E, H, L, M соответствуют коды 7, 0, 1, 2, 3, 4, 5, 6, то
лучше всего закономерность работает здесь:
Чуть хуже здесь - одно исключение:
|
19 Jan 2011 04:54 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
В нулевой части D7,D6=00 логика более сложная, но фактически без исключений!!! Группы схожих кодов операций выбираются по D2 D1 D0. Регистровую пару, регистр и направление передачи, или команду определяют D5 D4 D3. Логика при этом совершенно прозрачная!!!
Если регистрам A, B, C, D, E, H, L, M соответствуют коды 7, 0, 1, 2, 3, 4, 5, 6,
а регистровым парам B, D, H, SP - 0, 1, 2, 3, то
Осталась последняя группа - 11...
Last edited by Lavr on 23 Oct 2011 04:13, edited 3 times in total.
|
19 Jan 2011 07:13 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Последняя часть D7,D6=11 разбивается на группы схожих кодов операций по D2 D1 D0.
Дешифрация местами менее приятная, но вполне закономерная.
b2m - спешыал тэнкс!!! Очень своевременно подтолкнул!!!
|
19 Jan 2011 09:02 |
|
|
aav8
Maniac
Joined: 05 Nov 2008 19:47 Posts: 287 Location: 81.28.208.238
|
на 589 серии "электроника т3-29" - обсуждалось недавно в форуме - доволно красивая по тем временам.
так-же был учебный курс книжек (брошурок) по компьютерам - там были учебные стенды по основным процессорам, и один из примеров - микропрограммный процессор на 589 серии, исполнящий команда 580 процессора.
По поводу процессора на рассыпухе: я начинал изучать ЭВМ с "Электроника-100/16и" - таже самая Э60 как раз на рассыпухе - практически все на 155 серии - причем мелкой интеграции.
|
19 Jan 2011 09:47 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
aav8 - благодарю, Т3-29 у меня была и остатки по сей день есть.
А вот эти брощюрки у меня есть - надо взглянуть, что-то я не припомню про
процессор на 589 серии, исполнящий команды 580 процессора.
Но за ссылку спасибо.
По поводу процессора на рассыпухе: целью того, что я пытаюсь здесь сделать -
процессор на очень доступной рассыпухе как можно ближе совместимый с 8080,
но тем не менее простой для изготовления.
ЮТ-88 меня в своё время разозлил - его позиционировали как САМЫЙ ПРОСТОЙ
КОМПЬЮТЕР.
Когда я увидел схему - хотел сжечь этот подлый журнал за обман...
Временами мне думается, что любительское компьютеростроение могло начаться
в СССР вовсе не с "Микро 80".
|
19 Jan 2011 10:45 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Где-то я читал, что подавляющее большинство команд i8080 - характерны для RISC-процессора, то есть короткие команды типа регистр-регистр, регистр-память. К сообществу CISC этот процессор притягивают команды работы с ячейкой памяти как с регистром. Это команды работы с псевдорегистром М. Но - не все. Так MOV A,M и MOV M,A это по сути LDAX H и STAX H - вполне RISC-команды, а вот INR M, DCR M, ADD M, SUB M и т.д. которые модифицируют М непосредственно - характерные CISC-команды.
Значит необходимо откинуть из системы команд i8080 весь комплект CISC-команд. И посмотреть, что еще можно сократить до минимума.
Попробуем придержаться следующих требований:
Главными требованиями архитектуры RISC являются:
1. Любая операция должна выполняться за один такт.
2. Система команд должна содержать минимальное количество наиболее часто используемых команд одинаковой длины.
3. Операции обработки данных реализуются только в формате регистр-регистр. Обмен между регистрами и памятью выполняется только командами загрузки-записи.
В дальнейшем эти требования были несколько смягчены. Выполнение команды за один такт стало трактоваться, как загрузка конвейера команд в темпе "команда за такт". Набор команд современных RISC-процессоров возрос.
Незыблемым для архитектуры RISC остается только требование: обработка данных ведется только командами в формате регистр-регистр.
Среди других особенностей RISC архитектур следует отметить:
наличие достаточно большого файла РОНов (32 и более регистров),
для обработки используются трехадресные регистровые команды,
команды регистр/память используются только для загрузки (Ld) РОН из памяти и сохранения (ST) содержимого РОН в памяти,
как следствие упрощения команд, использование аппаратной, а не микропрограммной логики выполнения команд.
А вот PUSH и POP - RISC-команды?
|
19 Jan 2011 11:49 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
А у 6502 декодирование команд куда как прощще...
http://ru.wikipedia.org/wiki/MOS_Technology_6502
Поэтому самодельные процессорщики в той или иной мере повторяют 6502.
|
19 Jan 2011 22:07 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Уважаемый aav8!!! Вы совершенно правы!!! Сколько лет у меня эта книжка, а вторую главу не читал никогда…
Интересно, что год выпуска - 1988.
Я в новогодние праздники общался с друзьями, с которыми ВУЗ заканчивал. Все они электронщики до сих пор. И задвинул я им вот эту мысль, что любительская компьютеризация СССР могла бы начаться вовсе не с "Микро-80", а скажем, с простого процессора на мелкой логике - всё равно конструкция монструозная. А они мне возразили, что - нет. И сказали, что "Микро-80" - это просто массовая реклама и возникший ажиотаж. Люди старше нас, которых ты, Лавр, хорошо знаешь (сказали мне), вполне успешно и без лишнего шума делали те же контроллеры и микропроцессорные устройства, в частности, на 589-й серии. Возможно и сама концепция "персональной ЭВМ" не была тогда столь популярной. Других интересов и забот хватало.
PS. Только вот микрокодов в этой книжке никто не приложил...
|
20 Jan 2011 00:22 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Что-то тормоз у меня какой-то получается...
Если сделать привязку к кодам К580ВМ80 - схемотехника дюже
усложняется...
Если привязаться к своей системе команд, ну пусть дешифруются
хотя бы вот так:
схемотехника проще, но совместимости программной никакой...
Криво-компромиссный метод: систему команд сделать свою, но
написать кросс-транслятор ассемблера 8080, чтобы хоть какой-то
софт подходил - не писАть же всё заново?
|
23 Jan 2011 08:16 |
|
|
aav8
Maniac
Joined: 05 Nov 2008 19:47 Posts: 287 Location: 81.28.208.238
|
... из форума T3-29 ...
---
можно не придумывать как реализовать в железе систему команд какого-либо процессора, а загружать нужный микрокод.
Я как-то для этого искал 541 какие-то РУ (уже не помню) - скоростная память вроде на 125нс. Правда нашел всего 2 штуки...
|
08 Mar 2011 09:01 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Собственная компактная система команд приводит к довольно простой схемотехнике ЦПУ,
в случае, если делаем всё только на мелкой логике.
Но тогда получается вещь в себе, для которой нет ПО.
Единственный видимый компромисс - написать кросс-транслятор для тех
программ, что есть в исходных текстах.
ЦП с загружаемой системой команд, выполненный на мелкой логике представляется мне слишком обширным схемотехнически.
|
09 Mar 2011 16:20 |
|
|
Who is online |
Users browsing this forum: No registered users and 1 guest |
|
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
|
|