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

...
Google Search
Forth-FAQ Spy Grafic

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




Ответить
Имя пользователя:
Заголовок:
Текст сообщения:
Введите текст вашего сообщения. Длина сообщения в символах не более: 60000

Размер шрифта:
Цвет шрифта
Настройки:
BBCode ВКЛЮЧЕН
[img] ВЫКЛЮЧЕН
[flash] ВЫКЛЮЧЕН
[url] ВКЛЮЧЕН
Смайлики ВЫКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Не преобразовывать адреса URL в ссылки
Вопрос
Теперь гостю придется вводить здесь пароль. Не от своей учетной записи, а ПАРОЛЬ ДЛЯ ГОСТЯ, получить который можно после регистрации на форуме через ЛС.:
Этот вопрос предназначен для выявления и предотвращения автоматических регистраций.
   

Обзор темы - форт-машина
Автор Сообщение
  Заголовок сообщения:  Re: форт-машина  Ответить с цитатой
forth@km.ru писал(а):

подскажите, как сделать запуск "микрокода" команд ВМ через jump table ? сейчас опкоды ВМ тупо перебираются парами команд cpi/breq, для запуска последней команды понадобится 256 машинных циклов:



один из вариантов

Код:
         mov  zl,op                                       ; байт код.
         subi  zl,low(-TabJMP*2)                     ; таким образом прибавляем адрес таблицы.
         sbci  zh,high(-TabJMP*2)
         ijmp                                               ; Переход на требуемый .
.
.
.
.
TabJMP:
         rjmp    opc_00                                 ; 256 rjmp-ов
         rjmp    opc_01
         rjmp    opc_02
.
.
.
         rjmp    opc_FE
         rjmp    opc_FF

Сообщение Добавлено: Вс дек 11, 2011 20:53
  Заголовок сообщения:  Re: форт-машина  Ответить с цитатой
26 сентября, 21:49
Открыт исходный код прошивки DIY-компьютера Fignition
Код:
Джулиан Скидмор (Julian Skidmore) опубликовал исходный код прошивки для своего 8-битного самодельного компьютера Fignition.

Fignition — это маленький (но полноценный) DIY-компьютер, основанный на микроконтроллере AVR ATMega168 и имеющий 8 КБ ОЗУ (расширяется до 32 КБ) и 384 КБ flash-памяти, 8-кнопочную клавиатуру, композитный видеовыход (PAL) и USB-выход (тип B), через который осуществляется питание устройства. Имеется и доступ к шине I2C. В качестве операционной системы и языка программирования выступает диалект Forth.

Компьютер распространяется в виде 46 отдельных деталей, которые предлагается собрать самостоятельно с помощью паяльника. Стоимость составляет 20 фунтов стерлингов. По заявлению автора проекта, производительность компьютера в несколько раз превосходит такие компьютеры 80-х, как ZX Spectrum и Jupiter Ace.

Код прошивки доступен под лицензией GNU GPLv3 на популярном хостинге кода GitHub. Чуть позже Джулиан обещал выложить в открытый доступ материалы по аппаратной части своего устройства.

https://sites.google.com/site/libby8dev/fignition сайт разработчика
https://github.com/Snial/FIGnition код прошивки
Сообщение Добавлено: Вс дек 11, 2011 15:02
  Заголовок сообщения:   Ответить с цитатой
forth@km.ru писал(а):
мне проще в RU.EMBEDDED спросить


Если поленился заглядывать - там народ очень плотно занимается AVR. При чём с практическими целями. При чём некоторые возились (не знаю, как сейчас) с Фортом.
Сообщение Добавлено: Пт июл 14, 2006 12:59
  Заголовок сообщения:   Ответить с цитатой
Примерно так:
Сначала вычитается значение из региcтра Z,
а потом команда IJMP :)
Сообщение Добавлено: Пт июл 14, 2006 12:08
  Заголовок сообщения:   Ответить с цитатой
Посмотри как сделано например для AVR
с сайта tinyboot.com ( FF302 IDE в разделе фирмваре )
Но там тоже вроде замудрено:)
Сообщение Добавлено: Пт июл 14, 2006 12:03
  Заголовок сообщения:   Ответить с цитатой
я бы делал проверками битов сначала, т.е.
что-то подобное вот такому "кусту":

: blk_00 ... ; : blk_01 ... ; : blk_10 ... ; : blk_11 ... ;

: blk_1 dup 40 and if blk_11 then blk_10 else ;

: blk_0 dup 40 and if blk_01 then blk_00 else ;

: cmd dup 80 and if blk_1 then blk_0 else ;


Тогда, на каждую команду только 8 проверок.

p.s. это я для понятности на форте написал, а так на асме все, конечно :)
Сообщение Добавлено: Пт июл 14, 2006 11:49
  Заголовок сообщения:   Ответить с цитатой
Balancer писал(а):
Пообщайся с народом в http://forums.airbase.ru


мне проще в RU.EMBEDDED спросить
Сообщение Добавлено: Пт июл 14, 2006 10:24
  Заголовок сообщения:   Ответить с цитатой
Пообщайся с народом в http://forums.airbase.ru/index.php?topic=32548
в http://forums.airbase.ru/index.php?topic=34041

и т.п.
Сообщение Добавлено: Пт июл 14, 2006 10:13
  Заголовок сообщения:  форт-машина  Ответить с цитатой
начал сегодня писать FVM для AVR+32K XRAM, обнаружил что интерпретатор байт-кода
идеально ложится на систему команд и архитектуру (три 16-битных индексных регистра XYZ) AVR

подскажите, как сделать запуск "микрокода" команд ВМ через jump table ? сейчас опкоды ВМ тупо перебираются парами команд cpi/breq, для запуска последней команды понадобится 256 машинных циклов:

Код:
; Virtual FORTH Machine for AVR ATmega8515 + 32K EXT SRAM
; (c) Dmitry Ponyatov <forth@km.ru>, public domain

; ATTENTION: entry point must be @ 0x8000 (high 32K)

.include "m8515def.inc"

.org 0x00
rjmp RESET
.org 0x20

.def tmp = r20
.def cellh = r21
.def celll = r22
.def op = r21   ; opcode

RESET:
      ; enable watchdog
      ldi tmp,0b00001111
      out WDTCR,tmp
      ; enable external RAM control
      ; reset VM pointers
      ldi XH,0x80            ; instruction pointer
      ldi XL,0x00
      ldi YH,0xE0            ; return stack
      ldi YL,0x00
      ldi ZH,0xF0            ; data stack
      ldi ZL,0x00
      ; load opcode
NEXT: ; FORTH interpreter NEXT point
      ; load command opcode
      ld op,X+            
      ; FVM standard commands
      cpi op,0x00
      breq vm_NOP
      cpi op,0x01
      breq vm_JMP
      cpi op,0x03
      breq vm_CALL
      cpi op,0x04
      breq vm_RET
      ; user commands
      cpi op,0xF0
      breq vm_F0
      cpi op,0xF1
      breq vm_F1
      cpi op,0xF2
      breq vm_F2
      cpi op,0xF3
      breq vm_F3
      cpi op,0xF4
      breq vm_F4
      cpi op,0xF5
      breq vm_F5
      cpi op,0xF6
      breq vm_F6
      cpi op,0xF7
      breq vm_F7
      cpi op,0xF8
      breq vm_F8
      cpi op,0xF9
      breq vm_F9
      cpi op,0xFA
      breq vm_FA
      cpi op,0xFB
      breq vm_FB
      cpi op,0xFC
      breq vm_FC
      cpi op,0xFD
      breq vm_FD
      cpi op,0xFE
      breq vm_FE
      cpi op,0xFF
      breq vm_FF


ABORT: ; abort on incorrect command or assertion
      sleep
      rjmp ABORT

; VM commands

vm_NOP:   rjmp NEXT

vm_JMP:
      ld celll,X+      ; \ move to next command
      ld cellh,X+      ; /
      mov XH,cellh   ; \ move Ip to colabble addr
      mov XL,celll   ; /
      rjmp NEXT

vm_CALL:
      ld celll,X+      ; \ move to next command
      ld cellh,X+      ; /
      st -Y,XL       ; \ store next command addr 
      st -Y,XH       ; / to return stack
      mov XH,cellh   ; \ move Ip to colabble addr
      mov XL,celll   ; /
      rjmp NEXT   

vm_RET:
      ld XH,Y+
      ld XL,Y+
      rjmp NEXT

; put your own user defined commands here

vm_F0:   rjmp NEXT
vm_F1:   rjmp NEXT
vm_F2:   rjmp NEXT
vm_F3:   rjmp NEXT
vm_F4:   rjmp NEXT
vm_F5:   rjmp NEXT
vm_F6:   rjmp NEXT
vm_F7:   rjmp NEXT
vm_F8:   rjmp NEXT
vm_F9:   rjmp NEXT
vm_FA:   rjmp NEXT
vm_FB:   rjmp NEXT
vm_FC:   rjmp NEXT
vm_FD:   rjmp NEXT
vm_FE:   rjmp NEXT

vm_FF:   ; this command will be executed
      ; if VM memory will be empty
      sleep
      rjmp vm_FF
Сообщение Добавлено: Пт июл 14, 2006 09:47

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


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