Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт апр 25, 2024 05:59

...
Google Search
Forth-FAQ Spy Grafic

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




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

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

Обзор темы - Общие вопросы по SP-Forth и др. общие вопросы
Автор Сообщение
  Заголовок сообщения:  Re: Общие вопросы по SP-Forth и др. общие вопросы  Ответить с цитатой
Hishnik писал(а):
Sotnik писал(а):
Как работают эти слова? Комментов, как всегда, нет...
https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-globalalloc
Это в kernel32.dll, то есть можно просто руками, помимо Форта.
Прочитал, понятно что можно получить.
Буду потиху копать.
Но без примера трудно будет.
Сообщение Добавлено: Пт фев 04, 2022 01:00
  Заголовок сообщения:  Re: Общие вопросы по SP-Forth и др. общие вопросы  Ответить с цитатой
Sotnik писал(а):
Как работают эти слова? Комментов, как всегда, нет...

https://docs.microsoft.com/en-us/window ... lobalalloc
Это в kernel32.dll, то есть можно просто руками, помимо Форта.
Сообщение Добавлено: Чт фев 03, 2022 21:40
  Заголовок сообщения:  Re: Общие вопросы по SP-Forth и др. общие вопросы  Ответить с цитатой
Hishnik писал(а):
Боюсь, в "распространенных" фортах этого никак не будет. Это malloc сделать руками и работать с полученным указателем.
Главное мне понимать как это выглядит в работе.
Код:
\ Глобальная память, разделяемая между потоками      d:\spf4-20\devel\~yz\lib\gmem.f 
\ Идея реализации - А. Черезов 
\ Ю. Жиловец, 17.12.2002     

REQUIRE CZMOVE ~yz/lib/common.f
MODULE: GMEM
EXPORT
: MALLOCATE   ( u -- u-addr/0)  8 ( HEAP_ZERO_MEMORY) GetProcessHeap HeapAlloc ;
: MFREE         ( a-addr -- ?)     0 GetProcessHeap   HeapFree ;
: MGETMEM     ( u -- a-addr )    MALLOCATE   DUP IF 0 ELSE -300 THEN THROW ;
: MFREEMEM    ( a-addr -- )       MFREE ERR THROW ;
: CMGETMEM   ( a n -- a2)         DUP 1+ MGETMEM   2DUP C! DUP >R 1+ SWAP CMOVE R> ;
: CZMGETMEM ( a n -- a)           DUP 1+ MGETMEM     DUP >R CZMOVE R> ;
: ZMGETMEM     ( z -- a)          ASCIIZ> CZMGETMEM ;
;MODULE
Как работают эти слова? Комментов, как всегда, нет... :(
Мне нужно для работы два массива по 4 гега. (или один на 8, но это под 64 бита)
Есть два индекса, и гонять надо по массивам по кругу.

Скомпилилось нормально.
Сообщение Добавлено: Чт фев 03, 2022 17:32
  Заголовок сообщения:  Re: Общие вопросы по SP-Forth и др. общие вопросы  Ответить с цитатой
Боюсь, в "распространенных" фортах этого никак не будет. Это malloc сделать руками и работать с полученным указателем.
Сообщение Добавлено: Чт фев 03, 2022 02:28
  Заголовок сообщения:  Re: Общие вопросы по SP-Forth и др. общие вопросы  Ответить с цитатой
Hishnik писал(а):
Sotnik писал(а):
Как отобрать у винды максимально оперативной памяти?
Необходим сегмент(ы) под адресацию в Win10x64.
Как это вообще выглядит?
Да никак особо, она не отбирается насовсем, а резервируется. Приложение думает, что у него все есть, ОС отдает реальные страницы по мере доступа к ним. Это на уровне rb rd (reserve bytes, reserve dwords).
Мне нужно для работы два массива по 4 гега. (или один на 8, но это под 64 бита)
Есть два индекса, и гонять надо по массивам по кругу.
Можно пример рабочий, может это тут уже сто раз было, но я уже заколупываюсь перерывать все темы - инфы много.
Сообщение Добавлено: Чт фев 03, 2022 02:26
  Заголовок сообщения:  Re: Общие вопросы по SP-Forth и др. общие вопросы  Ответить с цитатой
Sotnik писал(а):
Как отобрать у винды максимально оперативной памяти?
Необходим сегмент(ы) под адресацию в Win10x64.
Как это вообще выглядит?

Да никак особо, она не отбирается насовсем, а резервируется. Приложение думает, что у него все есть, ОС отдает реальные страницы по мере доступа к ним. Это на уровне rb rd (reserve bytes, reserve dwords).
Сообщение Добавлено: Чт фев 03, 2022 01:56
  Заголовок сообщения:  Вся память.  Ответить с цитатой
Как отобрать у винды максимально оперативной памяти?
Необходим сегмент(ы) под адресацию в Win10x64.
Как это вообще выглядит?

Это прочитал. viewtopic.php?p=199#p199
Кое что прояснилось со структурой кишек винды: viewtopic.php?p=5754#p5754
Сообщение Добавлено: Ср фев 02, 2022 22:00
  Заголовок сообщения:   Ответить с цитатой
Главное к Пушкину не посылайте, иногда действительно проще спросить, чем успеть разобраться (у меня другой язык по работе, времени не хватает).
Сообщение Добавлено: Вт сен 16, 2008 20:59
  Заголовок сообщения:   Ответить с цитатой
Переправил честно - до твоего замечания.
Сообщение Добавлено: Вт сен 16, 2008 20:52
  Заголовок сообщения:   Ответить с цитатой
Нечестно, переправил задним временем :))
Сообщение Добавлено: Вт сен 16, 2008 20:48
  Заголовок сообщения:   Ответить с цитатой
Pretorian писал(а):
его надо к

так он там и стоит. :))
Сообщение Добавлено: Вт сен 16, 2008 20:47
  Заголовок сообщения:   Ответить с цитатой
Код:
CODE RP+@ ( offs -- x )
\ взять число со смещением offs байт от вершины стека возвратов (0 RP+ == RP@)

Так комент (0 RP+ == RP@) теперь правилен, но не в том слове :))))) его надо к
Код:
CODE RP+ ( offs -- addr )
Сообщение Добавлено: Вт сен 16, 2008 20:44
  Заголовок сообщения:   Ответить с цитатой
Pretorian писал(а):
0 RP+@ ни как не могут быть равны RP@, потому что первое это данные с адреса стека, а второе адрес стека (возвратов).

P.S. В какое место непонятный асм приткнуть (если сам запутался)?

Нет не запутался - а тоже устал. :(
Исправлял другие строки(смотри внимательно), вот эти:
Код:
8B C, 44 C, 04 C, 04 C, \ MOV EAX, 4 [EAX] [ESP]
8D C, 44 C, 04 C, 04 C, \ LEA EAX, 4 [EAX] [ESP]

на эти:
Код:
8B C, 44 C, 04 C, 04 C, \ MOV EAX, 4 [ESP][EAX]
8D C, 44 C, 04 C, 04 C, \ LEA EAX, 4 [ESP][EAX]

а про то, что уже проехали и забыл.
Ну и окончательно все должно быть так:
Код:
CODE RP+@ ( offs -- x )
\ взять число со смещением offs байт от вершины стека возвратов
     8B C, 44 C, 04 C, 04 C, \ MOV EAX, 4 [ESP][EAX]
     RET
END-CODE
     
CODE RP+ ( offs -- addr )
\ взять адрес со смещением offs байт от вершины стека возвратов(0 RP+ == RP@)
     8D C, 44 C, 04 C, 04 C, \  LEA EAX, 4 [ESP][EAX]
     RET
END-CODE
Сообщение Добавлено: Вт сен 16, 2008 20:39
  Заголовок сообщения:   Ответить с цитатой
chess писал(а):
При внимательном просмотре ошибок в комментариях еще больше.
Правильно тут будет так:
Код:
CODE RP+@ ( offs -- x )
\ взять число со смещением offs байт от вершины стека возвратов (0 RP+@ == RP@)
     8B C, 44 C, 04 C, 04 C, \ MOV EAX, 4 [ESP][EAX]
     RET
END-CODE
     
CODE RP+ ( offs -- addr )
\ взять адрес со смещением offs байт от вершины стека возвратов
     8D C, 44 C, 04 C, 04 C, \  LEA EAX, 4 [ESP][EAX]
     RET
END-CODE


0 RP+@ ни как не могут быть равны RP@, потому что первое это данные с адреса стека, а второе адрес стека (возвратов).

P.S. В какое место непонятный асм приткнуть (если сам запутался)?
Сообщение Добавлено: Вт сен 16, 2008 20:07
  Заголовок сообщения:   Ответить с цитатой
вот они, смертельные "детские" вопросы
Сообщение Добавлено: Вт сен 16, 2008 15:31

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


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