Мой мод не нужен?

Можно рефлексией - ты и делай.
Нет конкретных идей - ну прости.
Вроде уже всё понятно, относительно решения Asd73
 
Agravaine написал(а):
Равен, пора тебя банить! Ересь несешь.
Что хочу,то во флудилке и несу
Skarlet: 
Правила написал(а):
• Уважение к другим посетителям и пользователям
Ты можешь во флудилке писать о разных темах,да хоть апельсин обсуждай,но не забывай про правила форума. Если пользователям не нравиться твоё поведение,то проявляй сдержанность.
 
h_1415737267_7588257_7e18f11094.png

Печально все.
Те кто хоть немного писал на форте, должны знать, что слова VARIABLE и CONSTANT сами создают новые слова. Так вот, в форте есть слова CREATE и DOES> с помощью которых можно создавать слова подобные VARIABLE и CONSTANT. В Lua и близко ничего подобного нет.

Внезапно обнаружил небольшую ошибку в слове DOES> и опять никто не заметил... Лучше вместо мода буду доделывать этот процессор на VHDL.
 
Равен тут меня спрашивал на счет примеров программ. И я подумал, а почему бы не портировать что-нибудь на этот процессор.
Глянул на простую шахматную программу http://www.tckerrigan.com/chess/tscp
Но там требуется много вычислений с 32-разрядными числами и много памяти. Сделал сложение 32-разрядных чисел:

Код:
: >>
    BEGIN
        DUP
    WHILE
        1- SWAP 1>> SWAP
    REPEAT
    DROP
;

HEX
: D+
    ROT 2SWAP
    OVER 7FFF AND OVER 7FFF AND +
    F >>
    OVER F >> + OVER2 F >> +
    1>> -ROT + SWAP 2SWAP + +
;

Это просто отвратительно. Деление выглядит еще хуже. И при этом неплохо работает аналог форта из RedPower. Выходит, что этот процессор подходит для работы только с 16-разрядными числами.
Пора делать новый процессор.
 
Военкомат сегодня меня "обрадовал" - завтра я отправляюсь в армию.

Исправил в моде некоторые ошибки и залил на bitbucket.
Основные изменения в Форте:
Исправлены слова CREATE и DOES>
Исправлено слово TICKS
Удалено слово SKIP-WS
Переименованы: NOT на INVERT, 1LSHIFT на 1<<, 1RSHIFT на 1>>

Меня еще могут отправить домой со сборного пункта, но это вряд ли.
Кому не лень, напишите на http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/wip-mods/2126938-nedocomputers про обновление и то что меня не будет год. Но только не сегодня, а послезавтра, когда станет понятно взяли меня или нет.
 
Поздравляю(сарказм). Как отслужишь попробуй бейсик сделать. Там вроде бы не трудно(о самом бейсике). Я лично хочу в армию
 
Dovakin написал(а):
Как отслужишь попробуй бейсик сделать. Там вроде бы не трудно(о самом бейсике).
Бейсик делать не буду. У бейсика будет хуже производительность и возможностей у него меньше, чем у форта. К тому же этот процессор оптимизирован для форта - его отдельные инструкции являются словами форта.
Dovakin написал(а):
Я лично хочу в армию
Ну и дурак. Тебе после школы в институт лучше пойти, а потом косить по здоровью или поступать в аспирантуру. В армии делать нечего.
 
Asd73 написал(а):
Военкомат сегодня меня "обрадовал" - завтра я отправляюсь в армию.

Исправил в моде некоторые ошибки и залил на bitbucket.
Основные изменения в Форте:
Исправлены слова CREATE и DOES>
Исправлено слово TICKS
Удалено слово SKIP-WS
Переименованы: NOT на INVERT, 1LSHIFT на 1<<, 1RSHIFT на 1>>

Меня еще могут отправить домой со сборного пункта, но это вряд ли.
Кому не лень, напишите на http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/wip-mods/2126938-nedocomputers про обновление и то что меня не будет год. Но только не сегодня, а послезавтра, когда станет понятно взяли меня или нет.
Жалко тебя даже немного.
 
Ну вот я и вернулся.
Само собой мой мод потерял актуальность, но как ни странно, его еще кто-то скачивает. Поэтому решил хотя бы исправить обнаруженные ошибки.
Как я понял еще год назад, форт удобнее писать на форте, а не на ассемблере как я.
Написал что-то вроде компилятора форта, который работает только в режиме компиляции http://pastebin.com/DNBm2VxP
Но появилась проблема. Форт-система состоит из именнованых функций - слов, переменные и константы тоже являются такими словами.
Переменные в форте при их вызове помещают в стек адрес своей ячейки памяти.
Для переменных я написал слово DOVAR, которое в режиме компиляции вместо вызова функции вставляет инструкцию (процессора) помещения константы в стек, получалось увеличение быстродействия в 3 раза.
Но слово DOVAR использует одну системную переменную, которая, как и все переменные использует DOVAR. На ассемблере было просто - он двухпроходный, но форт по определению однопроходный...
Теперь надо для решения этой проблемы придумать костыль покрасивее. У кого-нибудь есть идеи?
 
Решил перенести этот компьютер на имеющуюся на работе плату Altera DE2-115 (было на Xilinx, Nexys 3).
Тут на форуме не писал, но процессор я делал на основе http://www.excamera.com/files/j1.pdf (процессор не самое сложное в компьютере).
Сразу не заработало, как оказалось у Xilinx немного отличается блочная память. А потом переписал на верилог: http://pastebin.com/6J4FunbU
Получилось еще короче чем у автора, но возможно немного медленней.

Обнаружил что не только я интересовался этим процессором: https://marsohod.org/forum/voprosy-o-plate-marsokhod/4067-zametki-nachinayushchego-marsovoda
http://we.easyelectronics.ru/plis/j1-stekovyy-processor-dlya-plis.html
А также один раз процитировали название моего форта: http://www.nedopc.org/forum/viewtopic.php?t=10850&p=116859
А тут кто-то практически повторил мой компьютер: https://github.com/howerj/fyp

Хотя форт и этот процессор весьма просты, но многие люди натыкались на те же грабли что и я. Поэтому вскоре попробую все это описать, может кому-нибудь поможет.
 
Нарисовал блок-схему процессора, приблизительно так, как она реализуется в FPGA.
h_1466617092_3340475_bbe61f2c15.png

1. Комбинационные устройства.
Комбинационные устройства это устройства без памяти. Т.е. можно составить таблицу сопоставления каждому входному сигналу выходного сигнала. Примеры комбинационных устройств: сумматор, поразрядное И, поразрядное ИЛИ, поразрядная инверсия.
На блок-схеме комбинационными устройствами являются все блоки к которым не подведен тактовый сигнал clk.
Мультиплексоры - это переключатели, подающие на единственный выход сигнал с одного из нескольких входов.
2. Последовательностные устройства.
Комбинационные устройства это устройства с памятью. Выходные сигналы у таких устройств зависят не только от текущих входных сигналов, но и от предыдущих.
Триггер - однобитовая ячейка памяти.
Самый простой триггер - RS-триггер, имеющий 2 входа - R и S. При подаче на вход S логической 1, на выходе устанавливается 1 и держится после снятия входного сигнала. При подаче на вход R логической 1, на выходе устанавливается 0. Подача на оба входа логических единиц - запрещенная комбинация и приводит к неизвестным последствием.
Синхронный триггер - триггер имеющий дополнительный вход (обычно обозначают C), такой триггер срабатывает только при активном сигнале на входе С. Синхронные триггеры с асинхронным управлением - это триггеры у которых активный сигнал входа С - это логический уровень (0 или 1). Синхронные триггеры с динамическим управлением - это триггеры которые срабатывают при перепаде сигнала на входе С (чаще с 0 в 1, но бывают и с 1 в 0 или оба перепада).
Все последовательностные устройства, используемые в процессоре - синхронные с динамическим управлением.
D-триггер - это триггер у которого на выходе устанавливается то же что и на входе (разумеется при подаче сигнала на вход С).
Регистры - набор синхронных триггеров (существуют разные определения). В этом процессоре все регистры - наборы синхронных D-триггеров с динамическим управлением.
Память также может быть с синхронным и с асинхронным управлением. Также у памяти обычно есть вход разрешения записи (WE, write enable).

Как я уже говорил, все это сделано на основе http://www.excamera.com/files/j1.pdf
Мультиплексоры на схеме обозначены в виде трапеций. Блоки Program counter, T, N - параллельные регистры с динамическим управлением. SP, DEPTH - реверсивные счетчики.
Блоки памяти RSTACK RAM, RAM, DSTACK RAM - двухпортовые с динамическим управлением. ALU - арифметико-логическое устройство. Control unit - полностью комбинационная схема управления.
Процессор имеет два стека, стек возвратов (на SP и RSTACK RAM) и стек данных (на T, N, DEPTH, DSTACK RAM).
Стеки, память, арифметико-логическое устройство все 16-разрядные, соответственно команды все также 16-разрядные.
Также забыл нарисовать что на правый адресный вход памяти RAM подается не T, а T >> 1.
Все команды выполняются за один период тактовой частоты. Сами команды практически не отличаются от оригинального процессора, но в инструкции ALU отсутствует бит T->R, также перед чтением из памяти требуется вставить ничего не делающую команду (NOP).
 
Asd73 написал(а):
Нарисовал блок-схему процессора, приблизительно так, как она реализуется в FPGA.
h_1466617092_3340475_bbe61f2c15.png

1. Комбинационные устройства.
Комбинационные устройства это устройства без памяти. Т.е. можно составить таблицу сопоставления каждому входному сигналу выходного сигнала. Примеры комбинационных устройств: сумматор, поразрядное И, поразрядное ИЛИ, поразрядная инверсия.
На блок-схеме комбинационными устройствами являются все блоки к которым не подведен тактовый сигнал clk.
Мультиплексоры - это переключатели, подающие на единственный выход сигнал с одного из нескольких входов.
2. Последовательностные устройства.
Комбинационные устройства это устройства с памятью. Выходные сигналы у таких устройств зависят не только от текущих входных сигналов, но и от предыдущих.
Триггер - однобитовая ячейка памяти.
Самый простой триггер - RS-триггер, имеющий 2 входа - R и S. При подаче на вход S логической 1, на выходе устанавливается 1 и держится после снятия входного сигнала. При подаче на вход R логической 1, на выходе устанавливается 0. Подача на оба входа логических единиц - запрещенная комбинация и приводит к неизвестным последствием.
Синхронный триггер - триггер имеющий дополнительный вход (обычно обозначают C), такой триггер срабатывает только при активном сигнале на входе С. Синхронные триггеры с асинхронным управлением - это триггеры у которых активный сигнал входа С - это логический уровень (0 или 1). Синхронные триггеры с динамическим управлением - это триггеры которые срабатывают при перепаде сигнала на входе С (чаще с 0 в 1, но бывают и с 1 в 0 или оба перепада).
Все последовательностные устройства, используемые в процессоре - синхронные с динамическим управлением.
D-триггер - это триггер у которого на выходе устанавливается то же что и на входе (разумеется при подаче сигнала на вход С).
Регистры - набор синхронных триггеров (существуют разные определения). В этом процессоре все регистры - наборы синхронных D-триггеров с динамическим управлением.
Память также может быть с синхронным и с асинхронным управлением. Также у памяти обычно есть вход разрешения записи (WE, write enable).

Как я уже говорил, все это сделано на основе http://www.excamera.com/files/j1.pdf
Мультиплексоры на схеме обозначены в виде трапеций. Блоки Program counter, T, N - параллельные регистры с динамическим управлением. SP, DEPTH - реверсивные счетчики.
Блоки памяти RSTACK RAM, RAM, DSTACK RAM - двухпортовые с динамическим управлением. ALU - арифметико-логическое устройство. Control unit - полностью комбинационная схема управления.
Процессор имеет два стека, стек возвратов (на SP и RSTACK RAM) и стек данных (на T, N, DEPTH, DSTACK RAM).
Стеки, память, арифметико-логическое устройство все 16-разрядные, соответственно команды все также 16-разрядные.
Также забыл нарисовать что на правый адресный вход памяти RAM подается не T, а T >> 1.
Все команды выполняются за один период тактовой частоты. Сами команды практически не отличаются от оригинального процессора, но в инструкции ALU отсутствует бит T->R, также перед чтением из памяти требуется вставить ничего не делающую команду (NOP).
eto-shedevr_27885478_big_.jpeg
 
Asd73, если не секрет, где учишься или работаешь? Неужели в какой-то области нужны такие знания?
 
Работаю в НИИ инженером, делаю электронику для вояк.
Такие процессоры никому не нужны, т.к. сделать подобное относительно несложно, но нормальный компилятор и средства отладки сделать весьма трудно.
Обычно требуется делать устройства цифровой обработки сигналов, а часто и вовсе просто перекладывающие байтики.

virysD, у нас роскомнадзор заблокировал этот risovach.ru. Думал ты хоть смешную картинку вставил, открыл через прокси...
 
Asd73 написал(а):
virysD, у нас роскомнадзор заблокировал этот risovach.ru. Думал ты хоть смешную картинку вставил, открыл через прокси...
Не угадал, через гугл картинки. >Клик
 
Назад
Сверху