Система команд и адресация ?

Публичный форум для http://www.nedopc.org/nedopc

Moderator: Shaos

imsushka
Maniac
Posts: 237
Joined: 01 Jan 2022 04:34
Location: USSR, Tashkent

Система команд и адресация ?

Post by imsushka »

Привет всем

делал (писал на vhdl) свой проц. хотел типа риск что б был.
но команд получилось больше 40

это то что я делал у себя

Code: Select all

Load - загрузить регистр/память из регистра/памяти/команды
Swap - обменять 2 регистра/памяти
Comp - сравнить
And / Or / Xor - логические команды
Slr / Sll / Sar - сдвиги вправо/влево логические и арифметические
Ror / Rol / Rorc / Rolc - сдвиг с переносом
Add / Addc / Adds / Sub / Subc / Subs - сложение/вычитание простое/с переносом/со знаком
Mul / Muls / Div / Divs / Mod - умножение/деление/остаток
Jmp / Call / Int / Ret - команды переходов
Push / Pop - стек
BitSet / BitReset / BitTest - работа с битами
и соотвественно адресация.
в рисках было регистр-регистр и регистр-память, а вот в армах (а он риск?) косвенной много.
один мой знакомый говорит что проц без косвенно-косвенной адресации это не проц (ну любит он 68000)


а какой набор был бы оптимально-минимальный ?
You do not have the required permissions to view the files attached to this post.
User avatar
Shaos
Admin
Posts: 24080
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Система команд и адресация ?

Post by Shaos »

Заменил DOC на картинку т.к. не у всех Word есть, чтобы эту табличку поглядеть...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Система команд и адресация ?

Post by Lavr »

imsushka wrote:а какой набор был бы оптимально-минимальный ?
Это смотря для чего он оптимально-минимальный...
В PDP-8 был минимальный набор команд, даже OR, XOR не было, но как-то они справлялись. :wink:

Я когда делал свой проц, добавлял команды понемногу и пробовал программировать.
Если казалось, что неудобно, добавлял ещё команд...
iLavr
imsushka
Maniac
Posts: 237
Joined: 01 Jan 2022 04:34
Location: USSR, Tashkent

Re: Система команд и адресация ?

Post by imsushka »

ну у меня не 4х битный
я сразу на 256 бит замахивался, помня высказывания что 640 кил хватит всем
правда 256 только для операндов, адресация 64 бита

а проц общего назначения

началось все с ОСи. на то время все писали свою ОСь. и я в том числе.
хотел микроядро что б было. но у него большие накладные расходы на переключение задач.
ну я и полез в процессор.
идея была сделать большой регистровый файл и просто, при переключении задач, переключать банку с регистрами. как в MSX
и просто регистров на 1 задачу побольше. что б к памяти было меньше обращений. 1 килобайт регистров, как в 8051, но с доступом в 1-2(16)-4(32)-8(64)-16(128)-32(256бит) байт.

на тот момент, 20 лет назад, моя поделка не в одну плисину не влезала. ну или я не додумал что.
реализовал исполнительный блок и регистровый блок. начал делать кеш команд и данных, но не понял как и что и забросил
а счас стал интересоваца плисами и что то опять потянуло доделывать.

с армом много работаю, вот и адресацию надо наверно переделывать
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Система команд и адресация ?

Post by Lavr »

imsushka wrote:ну у меня не 4х битный
Да какая разница, сколько-битный он у вас?... :roll:
Вы спрашиваете:
imsushka wrote:а какой набор был бы оптимально-минимальный ?
Я вам по сути этого вопроса и ответил.

PDP-8-то он и вовсе был 12-битный... :wink:
iLavr
imsushka
Maniac
Posts: 237
Joined: 01 Jan 2022 04:34
Location: USSR, Tashkent

Re: Система команд и адресация ?

Post by imsushka »

ну это понятно

раньше набор команд был расчитан на удобство пасания на асме
а сейчас восновном все на ЯВУ и соотвественно богатый набор команд не используется
только если ктото оптимизировал библиотеку на асме
и тоже самое с регистрами. все не используются.

получается что под свой проц писать свой компилятор
ладно, буду ковырять дальше
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Система команд и адресация ?

Post by Lavr »

imsushka wrote:получается что под свой проц писать свой компилятор
Именно так и получается - "под свой проц писать свой компилятор".
Я под свои процы их уже два написал.

Просто когда я делал первый проц, я, так же, как и вы, задавался вопросом о необходимом
и достаточном наборе команд.
И пришел я к выводу, что полноценного ответа на этот вопрос просто нет.

А для себя я выработал ту методику, о которой вам тут написал:
Lavr wrote:...добавлял команды понемногу и пробовал программировать.
Если казалось, что неудобно, добавлял ещё команд...
Закономерность здесь такова, что увеличение числа команд требует увеличения аппаратных ресурсов.
И в какой-то момент надо прийти к компромиссу и остановиться.

Для меня, к примеру, было шоком, что в системе команд PDP-8 нет таких привычных команд,
типа MVI A,NNh;
есть только команды типа:

Code: Select all

   LDA ADDR;
   ...
ADDR:
   DB  NNh
Обошлись они без MVI A,NNh, а PDP-8 - легендарная машина... :wink:
iLavr
imsushka
Maniac
Posts: 237
Joined: 01 Jan 2022 04:34
Location: USSR, Tashkent

Re: Система команд и адресация ?

Post by imsushka »

Lavr wrote:
imsushka wrote: Для меня, к примеру, было шоком, что в системе команд PDP-8 нет таких привычных команд,
типа MVI A,NNh;
есть только команды типа:

Code: Select all

   LDA ADDR;
   ...
ADDR:
   DB  NNh
Обошлись они без MVI A,NNh, а PDP-8 - легендарная машина... :wink:
меня вот это сильно напрягает в арме. до 50% программы могут занимать указатели.
а вот что интерестно, что было бы быстрее, это MVI A,NNh или LDA ADDR ? в любом случае лишние такты
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Система команд и адресация ?

Post by Lavr »

imsushka wrote:а вот что интересно, что было бы быстрее, это MVI A,NNh или LDA ADDR ?
По моему опыту MVI A,NNh - быстрее, хотя бы потому что 2-байтная, и байт NNh идёт следом.
В случае LDA ADDR - сначала считываем адрес, он можем быть 2-байтный, выставляем адрес
на шину, и только тут берём из памяти байт.
iLavr