nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 18 Mar 2024 21:13



Reply to topic  [ 46 posts ]  Go to page 1, 2, 3, 4  Next
Дешифрация кода команды CPU 
Author Message
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Я вот смотрю, все кто делает самодельный ЦПУ для совместимости с имеющимся
софтом добиваются совместимости с 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
Profile
Devil

Joined: 26 May 2003 06:57
Posts: 857
Reply with quote
Post 
Возможны следующие варианты:
D7 D6
- делят на 4 группы команд (можно сказать однотипных)
D5 D4 D3
- регистр, где данные модифицируются
- регистровая пара (D5 D4) в этом случае D3 будет относиться к коду операции
- код условия в командах перехода, вызова процедур или возврата
D2 D1 D0
- регистр, откуда берутся данные
- код операции

Есть, конечно, и исключения из правила, когда все 8 бит это код операции.

_________________
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/


18 Jan 2011 12:31
Profile WWW
Devil

Joined: 26 May 2003 06:57
Posts: 857
Reply with quote
Post 
Можно заметить ещё особенности:
команды вида 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
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Чтобы не быть голословным, я вот такую таблицу созерцаю до посинения пупа. :wink:
Code:
;-------------------------------
 No  HEX     BIN      COD
;-------------------------------
000  00H  0000.0000b  NOP
.....
063  3FH  0011.1111b  CMC
;-------------------------------
064  40H  01_00.0_000b  MOV  B,B
....
127  7FH  01_11.1_111b  MOV  A,A
;-------------------------------
128  80H  1000.0_000b  ADD  B
....
191  BFH  1011.1_111b  CMP  A
;-------------------------------
192  C0H  1100.0000b  RNZ
....
255  FFH  1111.1111b  RST  7
;-------------------------------

Я как раз по 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
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
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, то
лучше всего закономерность работает здесь:

Code:
;---10-OPER-REG---------------
    10_00.0_REGb - ADD REG
    10_00.1_REGb - ADC REG
    10_01.0_REGb - SUB REG
    10_01.1_REGb - SBB REG
    10_01.1_REGb - SBB REG
    10_10.0_REGb - ANA REG
    10_10.1_REGb - XRA REG
    10_11.0_REGb - ORA REG
    10_11.0_REGb - CMP REG


Чуть хуже здесь - одно исключение:

Code:
;-------MOV-REG--REG --------------------
         01_00.0_000b  MOV  REG,REG
118  76H 01_11.0_110b  HLT (MOV  M,M) - исключение!!!


19 Jan 2011 04:54
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
В нулевой части 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, то

Code:
;---------00------COD-----------
          00_XX.X_000b  NOP
          00_RP_0_001b  LXI  RP,
          00_RP_1_001b  DAD  RP

          00_RP_0_010b  STAX RP
          00_RP_1_010b  LDAX RP
          00_10_0_010b  SHLD 0000
          00_10_1_010b  LHLD 0000
          00_11_0_010b  STA  0000
          00_11_1_010b  LDA  0000

          00_RP.0_011b  INX  RP
          00_RP.1_011b  DCX  RP

          00_RE.G_100b  INR  REG

          00_RE.G_101b  DCR  REG

          00_RE.G_110b  MVI  REG,

          00_FU.N_CODb  FUN___
          00_00.0_111b  RLC
          00_01.0_111b  RAL
          00_00.1_111b  RRC
          00_01.1_111b  RAR
          00_10.0_111b  DAA
          00_11.0_111b  STC
          00_10.1_111b  CMA
          00_11.1_111b  CMC
;-------------------------------


Осталась последняя группа - 11...


Last edited by Lavr on 23 Oct 2011 04:13, edited 3 times in total.



19 Jan 2011 07:13
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Последняя часть D7,D6=11 разбивается на группы схожих кодов операций по D2 D1 D0.
Дешифрация местами менее приятная, но вполне закономерная.
Code:
;---------11------COD-----------
             xx
           Z=00
           C=01
       PO/PE=10
         P/M=11
                p
              N=0
              Y=1
          11_00.0_000b  Rpxx

          11_RP.0_001b  POP  RP

            COD
          11_00.1_001b  RET
          11_01.1_001b  RET; DB   0D9H
          11_10.1_001b  PCHL
          11_11.1_001b  SPHL

             xx
           Z=00
           C=01
       PO/PE=10
         P/M=11
                p
              N=0
              Y=1
          11_00.0_010b  Jpxx

             CO.D
          11_00.0_011b  JMP  0000
          11_00.1_011b  JMP ;DB   0CBH
          11_01.0_011b  OUT  00H
          11_01.1_011b  IN   00H
          11_10.0_011b  XTHL
          11_10.1_011b  XCHG
          11_11.0_011b  DI
          11_11.1_011b  EI

             xx
           Z=00
           C=01
       PO/PE=10
         P/M=11
                p
              N=0
              Y=1
          11_00.0_100b  Cpxx

          11_RP.0_101b  PUSH RP

          11_xx.1_101b  CALL

             CO.D
          11_00.0_110b  ADI  00H
          11_01.0_110b  SUI  00H
          11_10.0_110b  ANI  00H
          11_11.0_110b  ORI  00H
          11_00.1_110b  ACI  00H
          11_01.1_110b  SBI  00H
          11_10.1_110b  XRI  00H
          11_11.1_110b  CPI  00H

          11_NN.N_111b  RST  NNN

;---------11--------------------

b2m - спешыал тэнкс!!! Очень своевременно подтолкнул!!! :wink:


19 Jan 2011 09:02
Profile
Maniac

Joined: 05 Nov 2008 19:47
Posts: 287
Location: 81.28.208.238
Reply with quote
Post 
на 589 серии "электроника т3-29" - обсуждалось недавно в форуме - доволно красивая по тем временам.
так-же был учебный курс книжек (брошурок) по компьютерам - там были учебные стенды по основным процессорам, и один из примеров - микропрограммный процессор на 589 серии, исполнящий команда 580 процессора.

По поводу процессора на рассыпухе: я начинал изучать ЭВМ с "Электроника-100/16и" - таже самая Э60 как раз на рассыпухе - практически все на 155 серии - причем мелкой интеграции.


19 Jan 2011 09:47
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
aav8 wrote:
"электроника т3-29" - обсуждалось недавно в форуме


aav8 - благодарю, Т3-29 у меня была и остатки по сей день есть.

aav8 wrote:
учебный курс книжек (брошурок) по компьютерам - там были учебные стенды по основным процессорам

А вот эти брощюрки у меня есть - надо взглянуть, что-то я не припомню про
процессор на 589 серии, исполнящий команды 580 процессора.
Но за ссылку спасибо.

По поводу процессора на рассыпухе: целью того, что я пытаюсь здесь сделать -
процессор на очень доступной рассыпухе как можно ближе совместимый с 8080,
но тем не менее простой для изготовления.
ЮТ-88 меня в своё время разозлил - его позиционировали как САМЫЙ ПРОСТОЙ
КОМПЬЮТЕР.
Когда я увидел схему - хотел сжечь этот подлый журнал за обман...
Временами мне думается, что любительское компьютеростроение могло начаться
в СССР вовсе не с "Микро 80".


19 Jan 2011 10:45
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Где-то я читал, что подавляющее большинство команд 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
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
А у 6502 декодирование команд куда как прощще... :(

Code:
XXXYYYZZ
└┬┘└┬┘└┤
 │  │  └── Группа команд
 │  └───── Режим адресации
 └──────── Код команды

http://ru.wikipedia.org/wiki/MOS_Technology_6502

Поэтому самодельные процессорщики в той или иной мере повторяют 6502.


19 Jan 2011 22:07
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
aav8 wrote:
микропрограммный процессор на 589 серии, исполняющий команда 580 процессора


Уважаемый aav8!!! Вы совершенно правы!!!
Image

Сколько лет у меня эта книжка, а вторую главу не читал никогда…
Image

Quote:
Особенностью микроЭВМ УМПК-589, построенной на основе секционированных БИС МПК серии К589, является реализация на микропрограммном уровне системы команд микропроцессора К580ВМ80 и формирование внешних магистралей, совместимых с УМПК-80.

С.74.


Интересно, что год выпуска - 1988.

Я в новогодние праздники общался с друзьями, с которыми ВУЗ заканчивал. Все они электронщики до сих пор. И задвинул я им вот эту мысль, что любительская компьютеризация СССР могла бы начаться вовсе не с "Микро-80", а скажем, с простого процессора на мелкой логике - всё равно конструкция монструозная. А они мне возразили, что - нет. И сказали, что "Микро-80" - это просто массовая реклама и возникший ажиотаж. Люди старше нас, которых ты, Лавр, хорошо знаешь (сказали мне), вполне успешно и без лишнего шума делали те же контроллеры и микропроцессорные устройства, в частности, на 589-й серии. Возможно и сама концепция "персональной ЭВМ" не была тогда столь популярной. Других интересов и забот хватало.

PS. Только вот микрокодов в этой книжке никто не приложил... :cry:


20 Jan 2011 00:22
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Что-то тормоз у меня какой-то получается...
Если сделать привязку к кодам К580ВМ80 - схемотехника дюже
усложняется...
Если привязаться к своей системе команд, ну пусть дешифруются
хотя бы вот так:
Code:
XXXYYYZZ
└┬┘└┬┘└┤
 │  │  └── Группа команд
 │  └───── Режим адресации
 └──────── Код команды

схемотехника проще, но совместимости программной никакой...
Криво-компромиссный метод: систему команд сделать свою, но
написать кросс-транслятор ассемблера 8080, чтобы хоть какой-то
софт подходил - не писАть же всё заново?


23 Jan 2011 08:16
Profile
Maniac

Joined: 05 Nov 2008 19:47
Posts: 287
Location: 81.28.208.238
Reply with quote
Post 
... из форума T3-29 ...
---
можно не придумывать как реализовать в железе систему команд какого-либо процессора, а загружать нужный микрокод.
Я как-то для этого искал 541 какие-то РУ (уже не помню) - скоростная память вроде на 125нс. Правда нашел всего 2 штуки...


08 Mar 2011 09:01
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
aav8 wrote:
можно не придумывать как реализовать в железе систему команд какого-либо процессора, а загружать нужный микрокод.


Собственная компактная система команд приводит к довольно простой схемотехнике ЦПУ,
в случае, если делаем всё только на мелкой логике.
Но тогда получается вещь в себе, для которой нет ПО.
Единственный видимый компромисс - написать кросс-транслятор для тех
программ, что есть в исходных текстах.
ЦП с загружаемой системой команд, выполненный на мелкой логике представляется мне слишком обширным схемотехнически.


09 Mar 2011 16:20
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 46 posts ]  Go to page 1, 2, 3, 4  Next

Who is online

Users browsing this forum: No registered users and 3 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.