Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пт мар 29, 2024 18:39

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 408 ]  На страницу Пред.  1 ... 20, 21, 22, 23, 24, 25, 26 ... 28  След.
Автор Сообщение
 Заголовок сообщения: Re: Как сделать форт-процессор 2022
СообщениеДобавлено: Чт ноя 17, 2022 21:18 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 463
Откуда: Москва
Благодарил (а): 57 раз.
Поблагодарили: 22 раз.
KPG писал(а):
Benchmark 8 ферзей на разных калькуляторах и языках вплоть до варианта на ассемблере.
Вот сейчас тупо загнал в свою ПЛИС, заинлайнил кое-что, но никаких оптимизаций в самом алгоритме не делал
Код:
:: RR 8 ;
:: [ ] SS ;
:: [ ] XX ;
:: [ ] YY ;
:: [ 9 ] AA ;
:: RCLAA @ AA + @ ;
:: STOAA @ AA + ! ;
:: +! $ 1 ? @ + $ ! ;
:: ABS # `= shr15 .` # + 1 + * ;
:: NQCORE
   0 SS !
   0 XX !
   1 (
      1 XX +! RR XX STOAA 1 (
         1 SS +!
         XX @ YY !
         YY @ 1 > (
            0xFFFF YY +! XX RCLAA YY RCLAA - # 0 = $ ABS XX @ YY @ - = | {
               0 YY !
               XX RCLAA 1 - # XX STOAA 0 = (
                  0xFFFF XX +!
               XX RCLAA 1 - # XX STOAA 0 = )
            }
         YY @ 1 > )
      YY @ 1 - )
   RR XX @ - )
;

% UF\MCU16\uart.uf

:: putc 1 ( UARTTXSTATUS @ ) UARTTXDATA ! ;
: putbdigit \ c --- \ 0x0F & # 9 > { '7' ~ '0' } + putc ;
: putb \ c --- \ # `= shr4 .` putbdigit putbdigit ;
: puth \ a --- \ # `= shr8 .` putb putb ;

: NQUEENS
   173 UARTBRR !
   NQCORE SS @ puth 10 putc
   1 ( '.' putc 256 [ NQCORE ] 1 )
;

NQUEENS
В результате сначала рисует 036С (это ответ в hex), а потом за 66 секунд выводит 11 точек, каждая точка (кроме первой) - это 256 итераций NQCORE. Значит 10*256=2560 итераций за 66 секунд, следовательно имеем 2560/66=39 итераций в секунду или 0.025 секунд на итерацию, частота 20MHz
Вот для сравнения пара соседей по частоте, но на ассемблере:
Код:
-       0.0188    TI-83+ SE         Assembly / Z80 @ 15 MHz
-       0.0183    TI-89             Assembly / 68000 @ 12 MHz / HW.2
Повторюсь, я склепал прошивку тяп-ляп, еще не оптимизировал сам алгоритм под свою систему команд, но результаты уже близкие к соседям по частоте и уже почти в десятку лучших попадаю :) Вот ARM обгоню с его asm, тогда смешно будет :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сделать форт-процессор 2022
СообщениеДобавлено: Пт ноя 18, 2022 01:17 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Total Vacuum писал(а):
Код:
addr0 @ addr1 @ + addr2 !
в теории может и за 7 тактов выполниться,

Или за 3 :shuffle;


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сделать форт-процессор 2022
СообщениеДобавлено: Пт ноя 18, 2022 01:58 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Total Vacuum писал(а):
Шутка, конечно, но если плясать от транслятора,

Да вроде и не шутка. Вопрос еще в том, что реальные проекты пляшут даже не от процессора, а от перечня необходимых преобразований данных. Банальный LCD или UART для работы требуют определенной последовательности действий. Выписывать конечные автоматы и постоянно устраивать забеги через повторный синтез проекта? Это же дико долго, процессор тут справляется существенно лучше. И что теперь, из упрямства ни в коем случае не использовать процессор? Хорошо, используем... а какой? Выбирать на основе бренда? Но бренд как таковой не нужен, нужно обеспечить удобное описание вполне определенных вещей. Для ПЛИС это обычно манипулирование регистрами аппаратных модулей, а для этих целей не требуются команды формата add r7, r9, r11. Обычно все идет в стиле "пишем-ждем-читаем-пишем в память-выводим". Каких-то манипуляций на стеке мало или совсем нет.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сделать форт-процессор 2022
СообщениеДобавлено: Пт ноя 18, 2022 14:22 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 463
Откуда: Москва
Благодарил (а): 57 раз.
Поблагодарили: 22 раз.
Hishnik писал(а):
Total Vacuum писал(а):
Код:
addr0 @ addr1 @ + addr2 !
в теории может и за 7 тактов выполниться,

Или за 3 :shuffle;
:) Ну это уже высший пилотаж.
Я имел ввиду, что Форт-процессор не обязан уступать любому наугад взятому RISC-процессору по эффективности. И не будет уступать, если его грамотно спроектировать. Ведь среднестатистический RISC по большому счету умеет только это: несколько математических операций на регистрах, загрузить/сохранить регистр из памяти/в память, прыжки, вызовы подпрограмм и ret. Вот и все его умения. Форт-процессор умеет ровно то же самое: математика, @/! и прыжки/подпрограммы. Разница лишь в том, что математика у него не на регистрах, а в стеке. На элементарных операциях будет плюс/минус примерно одно и то же, а для сложных ситуаций вроде специальных инструкций для работы со строками, инструкций/регистров для организации циклов со счетчиком и т.д. есть CISC.

KPG писал(а):
В целом, из-за большого регистрового файла и равноправности регистров при выполнении команд, всё же, думаю будет быстрее пока нет доказательств обратного. :)
Вот это, кстати, очень показательно:
Hishnik писал(а):
Или за 3 :shuffle;
Фактически это означает, что мы имеем возможность тупо эмулировать работу RISC-процессора.
Вот напишем, допустим:
Код:
variable r0
variable r1
variable r2
...
r0 @ r1 @ + r2 !
r3 @ r2 @ * r3 !
r3 @ 0xFF and r3 !
и оно даже в худшем случае (без оптимизаций и активного использования стека) будет всего-лишь в 3 раза медленнее, чем
Код:
add r2,r0,r1
mul r3,r3,r2
and r3,r3,0xFF
в каком-нибудь RISC.
Но ведь можно и
Код:
r0 @ r1 @ + r3 @ * 0xFF and r3 !
А это уже 5 тактов против 3 у RISC в ситуации, когда мы играем по правилам RISC и на его поле :) Пример, конечно, дурной, но пусть будет :) И это идеальная для RISC ситуация, когда программа небольшая и все переменные удачно поместились в регистры, более того, мы пока даже не рассматриваем вопрос о том, как попали значения в эти регистры и куда потом пойдут. А Форт-процессор успел за 5 тактов взять с полки пирожки, понадкусывать и обратно по полочкам разложить. А ведь стоит лишь чуть усложнить задачу, и имеющихся на борту RISC регистров перестанет хватать, поэтому RISC будет вынужден активнее задействовать стек и сегмент данных. И еще не известно, кто из такой ситуации победителем выйдет :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сделать форт-процессор 2022
СообщениеДобавлено: Сб ноя 19, 2022 01:25 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Total Vacuum писал(а):
Ну это уже высший пилотаж.

Наверное, высший - это все-таки за 2... :)
Total Vacuum писал(а):
Я имел ввиду, что Форт-процессор не обязан уступать любому наугад взятому RISC-процессору по эффективности. И не будет уступать, если его грамотно спроектировать.

Именно. Тут же смешиваются аппаратная архитектура и система команд. Если у какого-то ядра более подходящая система команд, он будет эффективнее при той же аппаратной архитектуре, вот и все. И форт-процессор - тоже RISC, просто с определенным набором выполняемый действий.

Цитата:
add r2,r0,r1
mul r3,r3,r2
and r3,r3,0xFF


А вот тут интересный момент. В Форте-то данные были в переменных, а тут они внезапно в регистрах. А как они туда попали? Нужно добавить еще набор load/store инструкций, и картина перестает быть такой красивой. С большим регистровым файлом будет выигрыш в тех фрагментах программ, которые активно оперируют с относительно небольшим набором данных, укладывающихся в такой регистровый файл. Но это не единственный вариант.

Total Vacuum писал(а):
И это идеальная для RISC ситуация, когда программа небольшая и все переменные удачно поместились в регистры, более того, мы пока даже не рассматриваем вопрос о том, как попали значения в эти регистры и куда потом пойдут.

Именно.

Total Vacuum писал(а):
А Форт-процессор успел за 5 тактов взять с полки пирожки, понадкусывать и обратно по полочкам разложить. А ведь стоит лишь чуть усложнить задачу, и имеющихся на борту RISC регистров перестанет хватать, поэтому RISC будет вынужден активнее задействовать стек и сегмент данных. И еще не известно, кто из такой ситуации победителем выйдет

У форт-процессора будет существенно меньше размер кода - это сразу интересно для embedded, но есть еще один тонкий момент. Кэш. А он не бесконечный. И более плотный код будет чаще оказываться в кэш-памяти. Я уже не говорю о том, что память форт-процессора - это по сути кэш (с технической точки зрения), и расслоения на кэш/основную память, как в ARM с сопоставимой тактовой частотой, у него просто нет.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сделать форт-процессор 2022
СообщениеДобавлено: Сб ноя 19, 2022 20:09 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
Total Vacuum писал(а):
Вот ARM обгоню с его asm, тогда смешно будет :)

:)
Подумалось, что можно команду JZ "заменить" на специальный Jmp для циклов, если после декремента переменной цикла-счётчика образовавшийся флаг переноса (заёма) включить непосредственно в команду загрузки адреса перехода в счётчик команд без его анализа с такой логикой.
т.е. если CY=0, то PC = PC + 0, иначе PC= PC + CY (по размеру ячейки памяти программ), но можно и в "инверсии" делать переход. Даже, подобное поведение при построении ассемблерного кода для PDP-11 системы из Форт видел, когда часть команды уже становилась новой командой при определённом поведении в логикe работы программы.
(или же сам флаг переноса как сигнал можно использовать для управления дальнейшей логикой работы цифрового автомата)
Есть же в некоторых МК (PIC) команды "пропуска адреса " SKIP, а в ARM даже введенo условное выполнение команд для убирания "коллизий" в работе конвеера.

Hishnik писал(а):
[ память форт-процессора - это по сути кэш (с технической точки зрения), и расслоения на кэш/основную память, как в ARM с сопоставимой тактовой частотой, у него просто нет.

Отчасти это так, но в Форт нет теневых стеков для её отработки в полной степени и возможно продуманной теории логики работы с ним в таком ключе.

P.S. И, предположу, что MISC это не совсем RISC хотя и в чём то близок ему.

A Minimal CISC
Цитата:
Представленная здесь минимальная архитектура CISC представляет собой чрезвычайно простую архитектуру с нулевым адресом, подходящую для микропрограммной реализации. Он достаточно прост, чтобы его можно было представить на одной лекции, оставив время для обсуждения вариантов реализации или улучшения.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сделать форт-процессор 2022
СообщениеДобавлено: Вс ноя 20, 2022 00:03 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
KPG писал(а):
Подумалось, что можно команду JZ "заменить" на специальный Jmp для циклов

Стек циклов может быть аппаратным. DO LOOP I

KPG писал(а):
Отчасти это так

Это не отчасти, это на уровне описания так.

process (clk)
begin
if rising_edge(clk)
cmd <= program(pc);
end if;
end process;

KPG писал(а):
но в Форт нет теневых стеков для её отработки в полной степени и возможно продуманной теории логики работы с ним в таком ключе.

Кэш вообще не связан с языком программирования. Процессор просто приостанавливает работу из-за отсутствия сигнала готовности данных из памяти.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сделать форт-процессор 2022
СообщениеДобавлено: Пн ноя 21, 2022 12:55 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 463
Откуда: Москва
Благодарил (а): 57 раз.
Поблагодарили: 22 раз.
Total Vacuum писал(а):
мы имеем возможность тупо эмулировать работу RISC-процессора
Собственно, в тестах для калькуляторов приведен код под ARM, так что смело можно перевести этот код инструкция за инструкцией и замерить скорость:
Код:
: nqarm
   0 r1 !                                      \ MOV R1,#0 \
   0 r2 !                                      \ MOV R2,#0 \
   0 r0 !                                      \ MOV R0,#0 \
   0 r6 !                                      \ MOV R6,#0 \
   `: line40`                                  \ LINE40: \
   r1 @ r3 @ -                                 \ CMP R1,R3 \
   `= line180` jz                              \ BEQ LINE180 \
   r6 @ r1 @ s + !                             \ STR R6,[SP,R1,LSL #2] \
   r1 @ 1 + r1 !                               \ ADD R1,R1,#1 \
   r3 @ r6 !                                   \ MOV R6,R3 \
   `: line70`                                  \ LINE70: \
   r0 @ 1 + r0 !                               \ ADD R0,R0,#1 \
   r1 @ r2 !                                   \ MOV R2,R1 \
   `: line90`                                  \ LINE90: \
   r2 @ 1 - dup r2 !                           \ SUBS R2,R2,#1 \
   `= line40` jz                               \ BEQ LINE40 \
   r2 @ s + @ r7 !                             \ LDR R7,[SP,R2,LSL #2] \
   r6 @ r7 @ - dup r7 !                        \ SUBS R7,R6,R7 \
   `= line140` jz                              \ BEQ LINE140 \
   r7 @ abs r7 !                               \ RSBMI R7,R7,#0 \
   r1 @ r2 @ - r8 !                            \ SUB R8,R1,R2 \
   r7 @ r8 @ -                                 \ CMP R7,R8 \
   `= skip90` jz 0 `= line90` jz `: skip90`    \ BNE LINE90 \
   `: line140`                                 \ LINE140: \
   r6 @ 1 - dup r6 !                           \ SUBS R6,R6,#1 \
   `= skip70` jz 0 `= line70` jz `: skip70`    \ BNE LINE70 \
   r1 @ 1 - dup r1 !                           \ SUBS R1,R1,#1 \
   r1 @ s + @ r6 !                             \ LDR R6,[SP,R1,LSL #2] \
   `= skip140` jz 0 `= line140` jz `: skip140` \ BNE LINE140 \
   `: line180`                                 \ LINE180: \
;
Во сколько раз медленнее окажется мой процессор в режиме эмуляции ARM при той же тактовой частоте? Делайте ваши ставки, господа :) Напоминаю на всякий случай, что литералы выполняются за 3-4 такта, а call/jz - за 6-7, если верить статистике по бродилке, а в ARM, если ничего не путаю, все инструкции выполняются за такт, кроме bl/b, которые вроде как за 3. Также обращаю внимание, что abs в ARM делается в одно действие (RSBMI), а у меня целая подпрограмма штук на 20-30 инструкций. Проверю - отпишусь :)

KPG писал(а):
Есть же в некоторых МК (PIC) команды "пропуска адреса " SKIP
Хорошая мысль, кстати, надо подумать. Если будет skip, то можно ввести условное выполнение не только call/jmp, но и любых других инструкций. Осталось подумать, куда девать адрес, который уже лежит в стеке перед вызовом jz/call. Наверное, правильнее всего делать drop, если условие в skip выполнено. И с самим skip тоже есть варианты: он или без параметров, т.е. строго skip if not zero, или с параметром, который определяет, какие условия проверять.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сделать форт-процессор 2022
СообщениеДобавлено: Пн ноя 21, 2022 17:49 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
Total Vacuum писал(а):
Во сколько раз медленнее окажется мой процессор в режиме эмуляции ARM при той же тактовой частоте? Делайте ваши ставки, господа :) .

Думаю, что "быстрее", чем запуск эмуляции ARM на AVR и дальнейшего Linux. :)

Linux on an 8-bit micro?

Изображение


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сделать форт-процессор 2022
СообщениеДобавлено: Пн ноя 21, 2022 18:58 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 463
Откуда: Москва
Благодарил (а): 57 раз.
Поблагодарили: 22 раз.
Кстати, кто-нибудь знает какой-нибудь красивый и желательно короткий способ реализовать 0= через что-нибудь побитовое и +/-/*? Субтракт с боровом (sub rx,1 sbb rx,rx) не предлагать, у меня, увы, флаг борова не поддерживается :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сделать форт-процессор 2022
СообщениеДобавлено: Вт ноя 22, 2022 10:56 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1290
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
Total Vacuum писал(а):
Кстати, кто-нибудь знает какой-нибудь красивый и желательно короткий способ реализовать 0= через что-нибудь побитовое и +/-/*? Субтракт с боровом (sub rx,1 sbb rx,rx) не предлагать, у меня, увы, флаг борова не поддерживается :)


: 0= 0 NOR ;
:)

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сделать форт-процессор 2022
СообщениеДобавлено: Вт ноя 22, 2022 12:29 
Не в сети

Зарегистрирован: Вс авг 21, 2022 14:56
Сообщения: 38
Благодарил (а): 2 раз.
Поблагодарили: 4 раз.
Total Vacuum писал(а):
Субтракт с боровом (sub rx,1 sbb rx,rx) не предлагать, у меня, увы, флаг борова не поддерживается

А "меньше нуля" поддерживается? Ну или выделение знака числа?
: 0= dup 0< not swap 1- 0< and;

Понятно, что сюда просится nand, но это если только в нём одно из чисел инвертируется. В обычной логике оба входных сигнала инвертируются.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сделать форт-процессор 2022
СообщениеДобавлено: Вт ноя 22, 2022 18:33 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 463
Откуда: Москва
Благодарил (а): 57 раз.
Поблагодарили: 22 раз.
tsdima писал(а):
А "меньше нуля" поддерживается? Ну или выделение знака числа?
: 0= dup 0< not swap 1- 0< and;

Понятно, что сюда просится nand, но это если только в нём одно из чисел инвертируется. В обычной логике оба входных сигнала инвертируются.

Увы, в моей системе команд самый быстрый способ выяснить знак числа - это серия из 15 подряд операций 2/
Есть чуть более быстрый вариант 0< - через 0x8000 and, который кодируется push0 2 0 0 0 0 0 0 0 nand push0 pick nand (т.е. 13 команд), но формат значения "истина" в нем немного кривой :)
Ну а вариант с 2/ в цикле совсем страшный по тактам.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сделать форт-процессор 2022
СообщениеДобавлено: Вт ноя 22, 2022 19:12 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 463
Откуда: Москва
Благодарил (а): 57 раз.
Поблагодарили: 22 раз.
Пара замеров скорости с тестовой прошивкой от ARM:
- самое простое ядро, литералы выполняются за 3-4 такта (максимум 9), call/jz за 6-7 тактов (максимум 11) vs ARM/Z80/68000/6502 - 1 : 8.92/0.99/1.28/2.80;
- ядро с параллельным выполнением до 6 команд группы 0-3, литералы максимум за 2 такта, прыжки/подпрограммы максимум за 3-4 такта - 1 : 5.57/0.62/0.81/1.75;
- ядро с литералами и прыжками за такт пока не доделал :)

Цифры означают, что процессор медленнее ARM в 5.57-8.92 раза при той же частоте, примерно на одном уровне с Z80/68000 и медленнее 6502 раза в 2-3. Вот только не стоит забывать, что мы в тестовой прошивке "эмулируем" систему команд "чужого" процессора, имея при этом на борту всего 16 примитивных инструкций, и делая при этом много "лишней" работы. Если посмотреть код, то где-то регистры используются в качестве временного хранилища результата (r8), а можно обойтись стеком, несколько мест вроде r1 ! r1 @ и т.д. и т.п. Пару таких мест поправил, стало уступать ARM в 4.5-7.5 раз. Даже с текущим ядром резерв еще есть - 5 прыжков вперед, ассемблер все еще не умеет их оптимизировать, они получаются длинными, на каждом прыжке несколько лишних тактов. На 254 инструкции приходится 25 команд ARM, т.е. на каждую инструкцию ARM свыше 10 команд форт-процессора. Еще abs очень жирной получилась, аж 29 тактов, больше 10 процентов всего кода съела :)
Наверное, 8.92 или около того - это верхняя граница отношения производительностей ARM и моего форт-процессора. Если писать под ARM. А если писать под форт-процессор, то преимущество ARM, безусловно, будет уменьшаться. Тестовый пример, кстати, хорош тем, что алгоритм совсем не заточен под форт, а также встречаются "трудные" для переваривания моим процессором вещи вроде abs, jnz и короткие циклы :) Если честно, то я ожидал, что отставание от ARM будет намного больше. И, кстати, приятно удивил 6502. Впрочем, он удивил еще в тот момент, когда на NES (Dendy) бродилка с несколькими кадрами в секунду завелась :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Как сделать форт-процессор 2022
СообщениеДобавлено: Вт ноя 22, 2022 20:08 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
Интересно, что эмуляция относительно простого процессорного ядра TTL процессора Gigatron (6.25 МГц)
на STM32 в этом проекте потребовало контроллер STM32F405 ("немного" разогнанный до 225 Мгц со штатных 168 МГц)
для 36 такта на эмуляцию одной команды процессора Gigatron.

P.S. Результат эмуляции команд ARM на "Форт" не выглядит так уж безнадёжным в полученном результате.

Постапокалиптическое программирование
Autotranslate

Цитата:
...
В этой не очень короткой статье мы попытаемся пройти полный цикл от изучения процессора, создания ассемблера, создания ядра Forth VM и, наконец, создания достаточно полезного интерпретатора Forth. Остерегайтесь, это может содержать нежелательные детали низкого уровня, а также некоторые части метапрограммирования.

Если код говорит вам лучше, чем слова — вы можете найти эмулятор, ассемблер, виртуальную машину и пример кода Forth на github.com/zserge/lc3-forth . Это всего 0,5 КБ машинного кода или ~400 строк C.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 408 ]  На страницу Пред.  1 ... 20, 21, 22, 23, 24, 25, 26 ... 28  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB