Как мне подсказали товарищи на канале Форт и общение фортеров,
mov rcx, rax работает быстрее чем
xchg rax, rcx
mov rcx, rax работает быстрее чем
xchg rax, rcx
Этот ассемблерный вариант fibo работает примерно в 5 раз быстрее, чем приведенный выше.
CODE fibo ( u -- u1 )
mov rcx, rax
mov rax, 0
mov rbx, 1
@@:
mov rdx, rbx
add rbx, rax
mov rax, rdx
dec rcx
cmp rcx, 0
jnz @b
ret
END-CODE
Простой тренажер для запоминания иностранных слов
на основе частоты употребления слов.
Сам словарь здесь не привожу ввиду объёма.
Он в файле ini.fs, имеющий простой формат:
" слово" " перевод" <<
Для примера:
Скомпилированное приложение fcram.zip
см. последний пост на моем канале:
https://t.me/des_mots_canal
на основе частоты употребления слов.
\ main.fs
use args
use stou
use input
\ количество словарных статей
== N 1521
\ количество слов в блоке
== Q 10
value block 0
value record 0
struct
-- :word \ слово
-- :text \ перевод
ends mot
carray mots mot*N
== qlen 62
carray instr qlen+2
: setlen 62 instr c! ;
: prompt ." : " ;
: say count type ;
: merase mots len-struct mot N * erase ;
: num2adds ( u -- a ) len-struct mot * mots + ;
: press setlen instr input drop ;
value index 0
f: add_record word text -- 0
locals| a |
b{
index num2adds -> a
index 1+ to index
word a :word !
text a :text !
}
: append add_record drop ; as <<
include" ini.fs"
: doWord ( num -- )
space num2adds
dup :word @ say
." " press space
:text @ say
cr cr ;
f: loop1 num
b{
Q 0 DO
num doWord
num 1+ -> num
LOOP
-1
}
: loop2 begin record loop1 drop again ;
: main cr
args
argc @ 1 >
IF 1 argv atou
dup 152 > if drop 151 then
Q * to record
THEN
put "Ctrl+C - Выход"
cr
put "Enter - Листать. "
cr cr
merase
ini
loop2
;
Сам словарь здесь не привожу ввиду объёма.
Он в файле ini.fs, имеющий простой формат:
" слово" " перевод" <<
Для примера:
: ini
" et" " и" <<
" être _ été" " быть" <<
" à" " в" <<
" il" " он" <<
" ses" " его, её" <<
...
;
\eof
Скомпилированное приложение fcram.zip
см. последний пост на моем канале:
https://t.me/des_mots_canal
ecram.zip
418.2 KB
Англо-русский частотный словарь.
7800 словарных статей.
Мною для вас скомпилирован.
Исходник и словарь в каталоге SOURCE .
7800 словарных статей.
Мною для вас скомпилирован.
Исходник и словарь в каталоге SOURCE .
Запуск:
ecram <номер блока>
ecram - по умолчанию нулевой блок
В словаре 780 блоков, по 10 словарных статей
в каждом блоке
ecram <номер блока>
ecram - по умолчанию нулевой блок
В словаре 780 блоков, по 10 словарных статей
в каждом блоке
В следующей версии caif :
файл \LIB\map.fs
файл \EXAMPLES\map\map1\main.fs
файл \LIB\map.fs
#orig _vy_map
f: map1 term x start end
{
BEGIN start end < WHILE
x start term execute
start 1+ -> start
REPEAT
}
\eof
файл \EXAMPLES\map\map1\main.fs
use map
use fastpow
== xnum 2
: curried_pow ( y x -- ) fastpow . cr ;
: main cr ' curried_pow xnum 0 17 map1 drop cr ;
\\
Вычисление степеней двойки.
map2 применяет к переданным аргументам первую функцию f1 .
Затем к полученному результату применяет вторую функцию f2 .
файл \EXAMPLES\map\map1\main.fs
use map
: f1 ( x -- ) ( F: -- r ) s>f ;
: f2 ( F: r -- ) fsqrt f. cr ;
: main cr ' f1 0 1 17 ' f2 map2 drop cr ;
\\
Вычисление квадратных корней.
Определение map2 также файле \LIB\map.fs
f: map2 term1 x start end term2
{
BEGIN start end < WHILE
x start term1 execute
term2 execute
start 1+ -> start
REPEAT
}
Во многих случаях возможно использование map1 , map2 , как альтернатива циклу DO LOOP.
use map
: acircle ( x -- ) dup u. 7 spaces s>f
f**2 fpi f* f. cr ;
: main cr ." Radius Area" cr
cr ' acircle 0 1 11 map1 drop cr ;
\\
Площади круга
Не стоит использовать map в критичном по времени коде, так как DO LOOP
работает примерно в 6 - 7 раз быстрее.
работает примерно в 6 - 7 раз быстрее.
Сегодня выложил версию caif 0.25.3.1
https://gitflic.ru/project/ykovlev-vadim_1/caiflang/file?file=&branch=caif
Добавил итераторы,
изменения семантbки выполнения данных.
Дюжина примеров.
https://gitflic.ru/project/ykovlev-vadim_1/caiflang/file?file=&branch=caif
Добавил итераторы,
изменения семантbки выполнения данных.
Дюжина примеров.
gitflic.ru
ykovlev-vadim_1/Caiflang: Язык программирования Caif