|
nedoPC.orgElectronics hobbyists community established in 2002 |
|
Author |
Message |
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Не думаю, что экстремальнее PIC-a...
И вложение подпрограмм практически не хуже PIC-a можно сделать.
Вот в том виде, как он сейчас, это реально экстремально!
И то - работая с моделью, я уже привык программить его в кодах.
Для 15 комманд - ассемблер как-то извращенно заводить.
Когда берёшься за PIC после i8080, всё тоже кажется криво...
но привыкаешь!
.
|
16 Mar 2012 11:50 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Префикс с параметром, кстати, согласно схеме, выполнить тоже нетрудно.
Даже можно сделать префикс типа prefix N:
Нижние 4 линии адреса обеих ПЗУ микрокоманд - отцепить от общего провода,
и подключить к ним регистр 155ТМ8.
(На рисунке - в левом нижнем углу.)
Если префикс выбрать как ниббл F, то по команде prefix N это N
защелкиваем в регистр типа 155ТМ8, и получаем другой набор команд.
ПЗУ хуже чем здесь в схеме уже не найти... Так что надо его объём задействовать полностью!
Вот только не знаю пока - сбрасывать ли префикс после выполненной команды,
или новой командой префикса?
То есть распространять ли префикс на группу команд?
|
16 Mar 2012 13:56 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Вопрос тут у меня возник с точки зрения схемотехники даже несколько прнципиальный.
Мы решили делать процессор как недо-RISC. То есть, с возможностью всё же обращаться
в память программ и модифицировать её.
Если посмотреть определение RISC архитектуры:
То есть, как я понимаю, операции с содержимым ячейки памяти - не приветствуются?
По моим прикидкам, на схемотехнику это влияет довольно значително...
|
18 Mar 2012 07:40 |
|
|
VituZz
God
Joined: 13 Nov 2010 04:06 Posts: 1345
|
Думаю, нам тоже нужно следовать такому принципу - доступ к памяти только для обмена с регистрами. Мы же хотим простой процессор?
Кстати, по поводу тестирования на быстродействие. Точно не помню, но предлагалось ли использовать сигнатурный анализ? Мне кажется, сделав простенький анализатор и написав тестовую программу, можно вполне себе решить эту проблему "малой кровью"
|
18 Mar 2012 07:47 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Конечно! Но простота простоте рознь.
Просто вырисовывыается вот что (командами 8080):
Работаем с памятью только через аккумулятор А, т.е.
есть загрузка в А из памяти значением ячейки или константой,
и выгружаем в память только из А.
Типа LDAX и STAX.
Все остальные регистры (а я планирую их 16, раз уж я купил К155РУ2 )
получают значения только из А, и только через А могут отдать значение
в память.
Т.е. " ортогональности", о которой мы упоминали - не будет.
Всё упирается в простоту схемотехники, хотя мне нравится у PIC-ов,
результат можно вернуть не в аккумулятор, а в регистр-операнд.
|
18 Mar 2012 08:01 |
|
|
VituZz
God
Joined: 13 Nov 2010 04:06 Posts: 1345
|
Ну и нормально! "Нищебродская" философия требует максимального упрощения.
В АВРах тоже, если память не изменяет, не все регистры равноправны.
|
18 Mar 2012 08:31 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Наверное, ты прав... и MC68k - тоже прав... и боги - по-своему мудры,
раз уж речь зашла об гносеологических корнях агностицизма...
PS. Что меня конкретно смущает: аккумулятор А становится слишком привилегерованным регистром: Непосредственная загрузка становится возможной только в А .
MVI A,LIT LDAX STAX
Загрузка регистров возможна только через А:
MVI A,LIT MOV R,A
Операции возможны только между А и регистром, или А и константой.
Операции типа INR R и MVI R,LIT - невозможны. Насколько это удобно?
Мне кажется несколько непривычным...
|
19 Mar 2012 04:20 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
И ещё меня несколько смущает вот такой способ включения АЛУ:
Его приводят в большинстве книг по компьютерной архитектуре.
Если R0 принять за аккумулятор, то R1 - это что-то типа темп-регистра результата
и второго операнда одновременно.
Но получается, что загрузить его можно только операцией через АЛУ типа R1 = R0...
Кстати говоря, и в Машине Мано решение такое же.
Поучается, чтобы выполнить действие, скажем сумму R1 и R0
здесь надо:
1. загрузить R0;
2. передать R0 через АЛУ в R1 ( R1 = R0);
3. загрузить R0 новым операндом;
4. выполнить операцию ADD между R0 и R1, результат поместить в R1.
Не слишком ли хитрозадумчиво?
|
19 Mar 2012 05:22 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
| | | | Lavr wrote: Адрес возврата мы нигде сохранять не будем. Он так и останется в РС. Раз уж полюбому надо вводить в конструкцию ещё один регистр, шириной в РС, то пусть это будет дополнительный программный счётчик для подпрограммы! ... В принципе и третий РС так можно ввести. Чтобы хотя бы два уровня вложения подпрограмм было. | | | | |
Вобщем-то - что-то напоминающее RCA 1802:
Но вот с отсылкой Хардыча на MIPS с одним регистром в стеке возврата - ничего не нахожу.
Впрочем, аппаpатный стек на 2 вложения - у семейства PIC16C5x. А я с ним работал
и особых неудобств не испытал.
Правда, быстро отпрыгнул на более популярный PIC16F84, но алгоритмов сильно
не менял.
|
19 Mar 2012 13:52 |
|
|
HardWareMan
Banned
Joined: 20 Mar 2005 13:41 Posts: 2141 Location: От туда
|
|
19 Mar 2012 20:22 |
|
|
VituZz
God
Joined: 13 Nov 2010 04:06 Posts: 1345
|
Он нужен скорее для того, чтобы следующее действие АЛУ могло использовать предыдущий результат без его сохранения в память. Если же нужен второй операнд, то там есть стрелочка к АЛУ в обход R1.
|
19 Mar 2012 21:11 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Нууууууууу батенька... спасибо, конечно, ибо настойчиво я просил...
Но за ссылку на Вику в определённых кругах и по морде бьют...
Я думал - у тебя конкретный мануал на конкретное изделие... А Вику я видел.
Собственно, хотел узреть где-либо образец, как они с одним адресом возврата
программируют.
PS. Ну раз на то пошло - из Вики не следует, что "у МИПСов 1 уровень стека. Точнее, у них специальный регистр адреса возврата, куда сохраняется адрес при вызове подпрограммы."
Может я чего-то не увидел, но по Вике - у МИПСов есть указатель стека. А по другим источниками глубина стека у МИПСов - 4 вложения. Поэтому я так настойчиво вопрошал тут:"откуда дровишки?"
Last edited by Lavr on 20 Mar 2012 09:55, edited 1 time in total.
|
20 Mar 2012 07:20 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Нет... " стрелочка к АЛУ в обход R1" - это чтобы R1 считать;
Источник
Точно такое-же решение видим в Машине Мано:
Все они друг у друга книги списывают, похоже...
Поскольку у Intell мы видим всё несколько по-другому.
Аккумулятор получает результат через внутреннюю магистраль,
и с неё же может быть загружен.
|
20 Mar 2012 07:28 |
|
|
HardWareMan
Banned
Joined: 20 Mar 2005 13:41 Posts: 2141 Location: От туда
|
Симметрично к применению "батенька". :3 Поэтому и не давал до последнего - думал сам догадаешься и скажешь типо "МИПС МИПСу рознь, у одних есть у других нету". Но, видимо, лыжи не той системы. Конкретный экземпляр ядра: R3000.
Если ты внимательно курил Вику, то MIPS сама по себе не делает процессоры, они только продают лицензию на архитектуру. Дровишки я подкидывал по конкретной версии МИПСа: R3000. Он много где применяется, в первоЗЫЧе, например, в РМР плеерах. И вот при дизасме кода от ЗЫЧа или РМР плеера и видно, что уровень стека 1 - тот самый регистр возврата. А книжки мои все взяты из интернетов:
|
21 Mar 2012 20:43 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Спасибо - вот этой фразы изначально было бы вполне достаточно.
http://vhouten.home.xs4all.nl/mipsel/r3000-isa.html
Когда человек конкретно спрашивает, то он явно не хочет в самодогадки играть, нет? :3
PS. Если проц 32-разрядный и 32-разрядная шина адреса, или если проц 16-разрядный и 16-разрядная шина адреса, то ухватить адрес возврата в регистр - не трудно. Даже 16-разрядный адрес в 8-битном проце удобно ухватить в 8-битные регистры можно за 2 захода. В 4-битном проце 12-разрядный адрес можно сохранять в 4-битные регистры в 3 захода. Либо ничего не сохранять, а грузить сразу 12 бит в дополнительный РС за один цикл.
|
22 Mar 2012 02:19 |
|
|
Who is online |
Users browsing this forum: No registered users and 26 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
|
|