Единственото, което ми хрумва в момента е, че използваш някаква грешна версия на FASM несъответстваща на операционната система. Това съобщение за стека е от операционната система - компилатора просто крашва.
Въобще, виж на сайта https://flatassembler.net - За Linux/Unix има 2 версии. Едната е нейтив, а другата с използване на libc (примерно на BSD). Може някоя от тях да се държи по-добре.
Единственото, което ми хрумва в момента е, че използваш някаква грешна версия на FASM несъответстваща на операционната система. Това съобщение за стека е от операционната система - компилатора просто крашва.
Въобще, виж на сайта https://flatassembler.net - За Linux/Unix има 2 версии. Едната е нейтив, а другата с използване на libc (примерно на BSD). Може някоя от тях да се държи по-добре.
Просто инсталирах пакета който идва с Ubuntu. Ще погледна като имам време...
johnfound
Създадено на 30.09.2020, видяно: 1775 пъти. #13315
Какво дава
ulimit -s
300M стек е много, на моята машина дава 8М
Не. Това не е стека, а паметта, която да използва компилатора при компилирането. Особеност на самият FASM. Стека не би трябвало да крашва. Няма от какво.
|
Създадено на 30.09.2020, видяно: 1770 пъти. #13317
Какво дава
ulimit -s
300M стек е много, на моята машина дава 8М
Като вдигнах стека се компилира. Но Ubuntu отказва да изпълни 32-бит application. :)
allegro:~/tmp/work/AsmLeven$ file Levenshtein
Levenshtein: ELF 32-bit LSB executable, Intel 80386, version 1 (GNU/Linux), dynamically linked, interpreter ./ld-musl-i386.so, no section header
allegro:~/tmp/work/AsmLeven$ ./Levenshtein
-bash: ./Levenshtein: No such file or directory
johnfound
Създадено на 30.09.2020, видяно: 1768 пъти. #13319
Какво дава
ulimit -s
300M стек е много, на моята машина дава 8М
Не. Това не е стека, а паметта, която да използва компилатора при компилирането. Особеност на самият FASM. Стека не би трябвало да крашва. Няма от какво.
Сега погледнах в сорсовете - излиза, че това си е грешка на компилатора. Свързана е действително със надвишаване на лимита на стека при вложени всякакви скоби и други вложени конструкции. Но нещо не намирам от какво се определя...
Намира се някъде в началото на сорса. Иначе ще имаш нужда от MUSL, което вече съвсем сложно става...
Всъщност не е чак толкова сложно. Ето ти един bash скрипт за компилиране на MUSL:
#!/bin/sh
rm -rf ./muslsrc/
if [ -f ./ld-musl-i386.so ]; then
echo "The library is already compiled. Delete the binary files for rebuild."
exit 0
fi
if [ ! -f ./musl*.tar.gz ]; then
echo "Downloading MUSL source archive..."
{ wget https://www.musl-libc.org/releases/musl-latest.tar.gz 2> /dev/null; } || { echo >&2 "Error: missing MUSL sources."; exit 1; }
fi
mkdir muslsrc
{ tar --wildcards --strip-components 1 -C ./muslsrc/ -xzf ./musl*.tar.gz 2> /dev/null; } || { echo "Error: Broken MUSL source archive."; exit 2; }
cd muslsrc
echo "Compiling MUSL ..."
./configure --prefix=../musl --host=i386 CC="gcc -m32" CFLAGS="-Os -fno-omit-frame-pointer -mpreferred-stack-boundary=2 -march=x86-64" CROSS_COMPILE="/bin/" > /dev/null 2>&1 || { echo >&2 "Error: Can't configure MUSL."; exit 3; }
make -j 4 > /dev/null 2>&1 || { echo >&2 "Error: Can't compile MUSL."; exit 3; }
make -j 4 install > /dev/null 2>&1 || { echo >&2 "Error: Can't install MUSL to the current directory."; exit 3; }
cd ..
rm -rf ./muslsrc/ &
strip ./ld-musl-i386.so
echo "Building process finished successfully."
Ако решиш така (ако нямаш инсталирана поддръжка за 32 битови приложения, то само така) то нищо не коментирай в сорса, а компилираната библиотека ld-musl-i386.so я сложи при изпълнимия файл и тогава ще тръгне.
johnfound
Създадено на 01.10.2020, видяно: 1728 пъти. #13351
А сега малко зарибявка. Последни резултати на Pentium N3540:
0: Dist: 4, Time: 751 ms
1: Dist: 4, Time: 700 ms
2: Dist: 4, Time: 723 ms
3: Dist: 4, Time: 23 ms
4: Dist: 40, Time: 753 ms
5: Dist: 4, Time: 404 ms
6: Dist: 9, Time: 654 ms
7: Dist: 6, Time: 755 ms
8: Dist: 4, Time: 226 ms
9: Dist: 6, Time: 686 ms
Това според мене е по-бързо от варианта с trie на числотрошачката на Пайпа.
Напомням, че това е процесор с пасивно охлаждане на нетбук Acer.
Дали мога да бия и GPU-то?
Delegate
Създадено на 01.10.2020, видяно: 1721 пъти. #13352
Това ще работи ли толкоав бързо със всякакъв вид входни данни с тази дължина на стринга ?