Author |
Message |
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22583 Location: Silicon Valley
|
Перезаписывать это тяжелее по-моему т.к. надо считать лишний инкремент. Намного проще подменить следующую инструкцию на NOP - просто надо предусмотреть механизм, чтобы сохранялся флаг на следущую инструкцию и мультиплексорами вместо опкода из памяти выдавались бы все нули, а в конце этой самой следующей инструкции чтобы этот флаг сбрасывался - вобщем как-то так...
|
25 Nov 2017 02:58 |
|
|
haqreu
Maniac
Joined: 10 Mar 2017 05:30 Posts: 318
|
Ну я планировал было делать ещё двойные пропуски (типа, троичный джамп), поэтому простым флагом мне было не обойтись. Я подумаю, спасибо.
А зачем вообще столько разных пропусков нам?
|
25 Nov 2017 03:04 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Поскольку Shaos не любит "грязных трюков" (а проще всего такой трюк делать на открытых коллекторах с притяжкой к +5В), то схемотехнически просто поставить буфер, за ним - притяжку резисторами к +5В и ключи - к 0 В. В нужный момент - выключаем буфер и включаем ключи к 0 В. И совсем уж без слова "трюки" это решается в 2 буфера. 2-й буфер выдает на шину 0 В, когда первый отключен. P.S. Но сам бы я всё же делал, как предлагает haqreu: пропуск - это IP(PC)+1. Но тут всё начинает упираться в растактовку команд: IP(PC)+1 в принципе успеем сделать всегда, а вот 2 раза IP(PC)+1 ?
_________________ iLavr
|
25 Nov 2017 05:21 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22583 Location: Silicon Valley
|
Ну для простоты программирования например P.S. Я честно говоря не могу придумать широкомасштабного применения тройному джампу, а вот простой скип по равенству или неравенству флага тому или иному значению - это пожалуйста...
|
25 Nov 2017 10:07 |
|
|
haqreu
Maniac
Joined: 10 Mar 2017 05:30 Posts: 318
|
Слишком много скипов на мой вкус получается. Я бы разбавил бы чем-нибудь. Ещё не думал, но чем-нибудь вроде "вернуться на предыдущую команду в зависимости от флага"
Last edited by haqreu on 25 Nov 2017 13:13, edited 1 time in total.
|
25 Nov 2017 13:11 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Нетроично мыслишь! Забыл уже, что завещал пенсионер Mac Buster? "Отринь свои двоичные привычки, всяк сюда входящий!" (ну или не так пафосно, но что-то в этом роде... )
_________________ iLavr
|
25 Nov 2017 13:12 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22583 Location: Silicon Valley
|
Потихоньку горожу свой вариант Триадора в логисиме - надеюсь обойтись ячейками памяти с запоминанием по уровню и одной инструкцией на такт (точнее на один период тактирующей синусоиды): На борту двоичный ROM (пока 10-битный, но я хочу сделать преобразовалку из 8 битов в 5 тритов и заменить ПЗУ на обычное 2Кбайтное). Адрес формируется из бинарного представления 6 тритов (т.е. 12 битов - так что ПЗУ будет с неисползуемыми дырами). При сбросе программный счётчик указывает на адрес нулевой адрес OOOOOO (и там должен быть NOP, т.к. схема иногда его успевает проскочить). Команды заполнения регистров R1-R4 числовыми значениями уже готовы, теперь горожу копирование регистров...
|
25 Nov 2017 13:13 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22583 Location: Silicon Valley
|
Ну в данном случае практичность превыше эстетики
|
25 Nov 2017 13:15 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
А почему бы нет? Это всего лишь PC-1 или PC-1 2 раза. Только опять же - если возможно аппаратно и хватит тактов...
_________________ iLavr
|
25 Nov 2017 13:16 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22583 Location: Silicon Valley
|
И каким алгоритмам это может помочь?
|
25 Nov 2017 13:19 |
|
|
haqreu
Maniac
Joined: 10 Mar 2017 05:30 Posts: 318
|
Я ж говорю, не думал ещё. Но предлагаю подумать. 27 разных джампов - это перебор, как на мой вкус.
|
25 Nov 2017 13:21 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Они у тебя на конденсаторах или всё же - триггеры? Кстати... я-то понимаю, что аппаратный скип сделать легче... Но вот просто как-то взять и выкинуть из троичного процессора троичное ветвление, о котором нам талдычили классики "троизма"...
_________________ iLavr
|
25 Nov 2017 13:22 |
|
|
haqreu
Maniac
Joined: 10 Mar 2017 05:30 Posts: 318
|
Я так и не придумал, как это сделать. Точнее, получалось очень громоздко, основные загвоздки именно при всяких джампах и т.п. В итоге плюнул, сделал по фронту.
|
25 Nov 2017 13:25 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22583 Location: Silicon Valley
|
Буфер с обратной связью - раз уж оно в реальности работает Ну оно есть в других наших троичных гипотетических процессорах А тут как бы RISC - практичный минимализм и всё такое
|
25 Nov 2017 13:27 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22583 Location: Silicon Valley
|
Ну давай я попробую вместо NPOOO - skip_if_no_overflow сделать двойной SKIP по знаку R1: - no skip if R1<0 - skip 1 instruction if R1==0 - skip 2 instructions if R1>0 В таком случае можно будет столь любимый Лавром тройной джамп имитировать TERNARY_SKIP JP negative_pointer JP zero_pointer JP positive_pointer
|
25 Nov 2017 13:39 |
|
|