microwallet-faucets
Forth in KolibliOS kernel
Debug by edit for SPF4
тетрис
serial-port
Life
Форт для Колибри и в виде драйвера
образ диска с Колибри и Фортпримерами
SPF под Linux
Компиляция СПФ в ассемблер(MASM)
Форт для 8051
Форт для MSP

инфиксная запись в СПФ
текстовый редактор для ФортОС работает под SPF

Коммерческая противоугонная GPS поисковая система с использованием форт-технологии

Мои недошедшие в fido7.su.forth послания.

Hi Dmitry
"Dmitry Groshev"  сообщил/сообщила в новостях
следующее: news:c81ssi$t8$11735@www.fido-online.com...

>  >> Да неужто? И чего же тогда Форты кэшируют в регистре максимум один
только
>  >> верхний элемент? ;-)
>  AC> Разные форты бывают :) В SPF4  и других современных фортах
оптимизатор
>  AC> делает намного больше. Поэтому вычисления в SPF4 быстрее чем в SPF3 в
40
>  AC> раз.
>
> Названный оптимизатор не делает ничего кроме банальной
peephole-оптимизации.

   Что-за peephole-оптимизация?

> Может я чего-нибудь не понял, но ничего похожего на распределение
регистров
> лично я там не увидел.

Часто оптимизация заключается в замене: хранения промежуточных значений
на стеке на хранение в регистрах. Результат работы оптимизатора можно
посмотреть
применив: ~mak\listing2.f . Заменив INCLUDED на INCLUDED_L получаешь
листинг.
Работу оптимизатора можно отследить: http://wiki.forth.org.ru/optimizer

Михаил


Hi Dmitry,
"Dmitry Groshev"  сообщил/сообщила в новостях
следующее: news:c7pv3q$77f$9639@www.fido-online.com...

>Со
> времен Мура уже успело возникнуть и приобрести популярность множество
языков -
> взять хотя бы Java, Python, Ruby, Lua - а Форт как был увлечением
немногих,
> так им и остался.

   Непривильно сравнивать Форт с языками программирования это разные
категории.
Правильнее Форт рассмотреть как ОС и сравнить его с другими ОС.
То-что Форт воспринимют только как язык и является одной из причин низкой
его
популярности. Вопрос следует ставить так: почему Java, Python, Ruby, Lua и
др.
вне рамок Форт-системы? Из которого вытекает вопрос: что дает Форт окружение
для языков программирования?

При том, что Форт окружение ничем не мешает работе языков он дает
следующие преимущества.
1. рамках Форта, языки легче создавать, поскольку они могут пользоватся
средствами самой Форт-системы. К тому-же Форт можно расширить в этом
направлении
2. Они могут наследовать свойства Форта: быть сразу компиляторами и
интерпретаторами
в зависимости от состояния, участвовать в управлении компиляцией.
3. Программа может быть написана на смеси всех языков, которые понятны
Форту.
4. Языки могут быть представлены в виде библиотек Форта и загружены по
необходимости.

Причины низкой популярности Форта делятся на 3и части.
Исторические, психологические, экономические.
Истрорические это те, что вего мало: мало фортеров, мало наработок, мало
документации.
Вообще, с Форта надо было начинать.
Истрорические это те, что Психологические это те, что Форт неправильно
воспринимают, исходя из сложившихся
стереотипов.
Но главное экономические: Производители коммерческого ПО не заинтересованы в
том,
чтобы их пользователи могли сами о себе пазаботится. Форт-система с защитой
от
плагиата очень много теряет.
Решение экономической проблемы: http://mak.chat.ru/ee.txt


Hi Dmitry,
"Dmitry Ponyatov" 

>  самая свежая версия: http://hippo.ru/~forth/book.rar

Мне понравилось, что ты в качестве идентификатора
регистров используешь текущее значение кодофайла при
их определении в http://hippo.ru/~forth/book.rar/8086.spf

Однако, разместив идентификатор в одном байте,
можно состояние всех операндов разместить в одном слове.

\ 8086 ФОРТ-ассемблер

REQUIRE [UNDEFINED] lib\include\tools.f

[UNDEFINED] BREAK
[IF] : BREAK  POSTPONE EXIT POSTPONE THEN ; IMMEDIATE
[THEN]

[UNDEFINED]
[IF] : B, C, ;
[THEN]

MODULE: ASM8086

HEX

CREATE dst 0 , 0 ,
dst 1+  CONSTANT src
dst 2 + CONSTANT num

: reg_src ( n -- ) CREATE , DOES> @ src !
\ имменно ! для обнуления старших байтов
;

: reg_dst ( n -- ) CREATE , DOES> @ dst !
;

: regs  ( n -- n+1 )
 DUP reg_src DUP reg_dst 1+ ;

1
regs AH, AH regs AL, AL regs BH, BH regs BL, BL
regs CH, CH regs CL, CL regs DH, DH regs DL, DL
regs AX, AX regs BX, BX regs CX, CX regs DX, DX
regs SI, SI regs DI, DI regs BP, BP regs SP, SP
regs CS, CS regs DS, DS regs SS, SS regs ES, ES
DROP

: #  1  num ! ;
: [] 2  num ! ;

: ?OP dst @ = ;

: %OP:
  :  dst @ LIT,  POSTPONE ?OP  POSTPONE ;
;

 AX, CS %OP: ax,cs
 DX, AX %OP: dx,ax
 SS, AX %OP: ss,ax
 ES, AX %OP: es,ax
 AX, #  %OP: ax,#num
 BX, #  %OP: bx,#num
 SP, #  %OP: sp,#num
 SI, #  %OP: si,#num
 AL, #  %OP: al,#num
 CL, #  %OP: cl,#num
 DL, #  %OP: dl,#num
 AH, #  %OP: ah,#num
 CH, #  %OP: ch,#num
 DH, #  %OP: dh,#num

: MOV,
  ax,cs   IF 8C B, C8 B, BREAK \ mov ax,cs
  dx,ax   IF 8E B, D8 B, BREAK \ mov dx,ax
  ss,ax   IF 8E B, D0 B, BREAK \ mov ss,ax
  es,ax   IF 8E B, C0 B, BREAK \ mov es,ax
  ax,#num IF B8 B,    W, BREAK \ mov ax,#num
  bx,#num IF BB B,    W, BREAK \ mov bx,#num
  sp,#num IF BC B,    W, BREAK \ mov sp,#num
  si,#num IF BE B,    W, BREAK \ mov si,#num
  al,#num IF B0 B,    B, BREAK \ mov al,#num
  cl,#num IF B1 B,    B, BREAK \ mov cl,#num
  dl,#num IF B2 B,    B, BREAK \ mov dl,#num
  ah,#num IF B4 B,    B, BREAK \ mov ah,#num
  ch,#num IF B5 B,    B, BREAK \ mov ch,#num
  dh,#num IF B6 B,    B, BREAK \ mov dh,#num
  -333 THROW
;

: ASM_END
  PREVIOUS
;

EXPORT

: ASM8086_BIG
  ALSO ASM8086
;

;MODULE
\EOF TEST

HERE
ASM8086_BIG
 AX, CS    MOV,
ASM_END

 20 DUMP

Hosted by uCoz