Quantcast

stack and data space allocation

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

stack and data space allocation

ygrek-3
Привет,

Gerry wrote:
> I've just been looking at why lexex doesn't run with SP-Forth and it
> appears that both stacks are too small and there is insufficient
> dataspace available. I've emailed the developers to see if there is a
> way to increase the sizes of these and am stuck until they reply,
> unless anyone else knows how to do it.

А кто-нибудь знает как это делать? У меня что-то сходу не вышло.
Хорошо бы этот код в lib положить.

Кстати, на BSD spf/linux в первую очередь не заводится из-за багов в GNU линкере.
Интересно, возможно ли это обойти не выделяя секцию
под кодофайл в объектном файле, а ALLOCATE'ом при запуске?
SAVE работать тогда конечно не будет, но хоть интерпретатор будет для
кривых систем. Впрочем всё равно надо ещё докрутить ОС-зависимые API.

--
 ~ygrek

------------------------------------------------------------------------------
Come build with us! The BlackBerry® Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9-12, 2009. Register now!
http://p.sf.net/sfu/devconf
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: stack and data space allocation

Andrey Cherezov
23.09.2009 22:44, ygrek пишет:

> Gerry wrote:
>    
>> I've just been looking at why lexex doesn't run with SP-Forth and it
>> appears that both stacks are too small and there is insufficient
>> dataspace available. I've emailed the developers to see if there is a
>> way to increase the sizes of these and am stuck until they reply,
>> unless anyone else knows how to do it.
>>      
> А кто-нибудь знает как это делать? У меня что-то сходу не вышло.
> Хорошо бы этот код в lib положить.
>    
Что именно не вышло?
10000000 TO IMAGE-SIZE S" spf4-big.exe" SAVE \ это чтобы увеличить место
под код
А резервирование стека возвратов на стеке данных - в _WNDPROC-CODE (в
районе ST-RES).
Размер системного стека (для каждого потока) мы запрашиваем у ОС в
PE-заголовке
(там 100кб), если я верно помню. Каждый поток форта резервирует на нем
4кб под стек
данных, отодвигая esp. Т.е. поидее можно там вместо 3968 указать 50кб.
Указанные 3968
подобраны экспериментально как наименее конфликтное при использовании
колбэков.
Можно было бы стек данных вообще в ALLOCATEd-память помещать (в dsForth'е мы
так делали, если верно помню), или в USER-область.

А я по постам Gerry решил, что он просто сначала неверно локализовал
причину сбоя -
грешил на нехватку места, а потом добрался до истинного бага с байтовым
инкрементом.

Да, кстати, может действительно стоит увеличить значение IMAGE-SIZE по
умолчанию,
512Кб уже как-то слишком скромно по нынешним временам :)
> Кстати, на BSD spf/linux в первую очередь не заводится из-за багов в GNU линкере.
> Интересно, возможно ли это обойти не выделяя секцию
> под кодофайл в объектном файле, а ALLOCATE'ом при запуске?
>    
Возможно, конечно - создать временный словарь TEMP-WORDLIST и установить
CURRENT
в него. Рувим на базе этого механизма сделал даже многопоточную
компиляцию - при этом
основная (глобальная) секция кода не используется, а код компилируется в
каждом потоке в
свой временный словарь. Очень удобно для внутренних скриптов веб-сервера
в частности.
> SAVE работать тогда конечно не будет, но хоть интерпретатор будет для
> кривых систем. Впрочем всё равно надо ещё докрутить ОС-зависимые API.
>    
Да, там надо было либо компилировать Форт в Си-текст, либо уже
доделывать самодельную
сборку ELF'а, без использования gnuсного линкера. Мне кажется, что эта
вторая задача
более реальна, если отталкиваться от lnxstub Дмитрия Грошева
(https://sourceforge.net/projects/spf/files/sp-forth4%20Linux%20test/test1/lnxstub.zip/download),
под виндой 15 лет назад я шел тем же путем.


------------------------------------------------------------------------------
Come build with us! The BlackBerry® Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9-12, 2009. Register now!
http://p.sf.net/sfu/devconf
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Loading...