PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Нейрообработчик из процедуры


Нейрообработчик из процедуры

Сообщений 1 страница 7 из 7

1

Здравствуйте.
Подскажите, сколько можно создать процедур в процедуре?
Наверно какой-то стек для этого выделяется, но если вдруг много будет процедур в процедуре - куда упрётся программа?

Проектирую имитацию логики нейрокомпьютера и пробую создать многопоточный обработчик пространства нейронов и как раз процедурное решение полностью отражает архитектуру ПЛИС (аппаратной части).

Если правильно понял, то всем переменным Protected просто присваивается адрес, но необходимо держать так-же и обратный адрес, зачение предела которых не могу найти.

0

2

Ev3658 написал(а):

Подскажите, сколько можно создать процедур в процедуре?

Сколько вложенных вызовов процедур может быть?
Зависит от размера стека и количества локальных переменных и их размера.
Запускаем под отладчиком

Код:
Procedure x(Count)
  x(Count+1)
EndProcedure

x(Count)

После ошибки переполнения стека наводим мышку на Count и узнаем сколько было вложенных вызовов. Добавляем переменных и число вызовов уменьшится.

Код:
Procedure x(Count)
  Protected x.l, y.l
  x(Count+1)
EndProcedure

x(Count)

0

3

Можно вообще без передачи параметров в процедуру сделать через глобальную переменную тогда стек будет расти на четыре байта адреса возврата,также не понятна суть локальных переменных,ведь каждая из них работает только в своей процедуре и соответственно глобальных несколько решат туже задачу ну или вообще можно без процедур тогда чисто gosub решить задачу.
Ps:на другом форуме было выкладывали прогу запуск около 100 или 1000 потоков с заданием обработки,может это нужно?

Отредактировано Sergeihik (22.08.2021 19:14:19)

0

4

Sergeihik написал(а):

Ps:на другом форуме было выкладывали прогу запуск около 100 или 1000 потоков с заданием обработки,может это нужно?

Тут всё зависит от обработчика нейрона.

Пытаюсь сделать инструкцию логического нейрона x64.

Готовлюсь к заполнению памяти, очень сложно заполнить образ и сделать стандартную связку нейронов.

Будет не лишним знать пространство стека и используемое пространство, а может и инструкций.
К примеру в Bascom есть подобные механизмы, а в PureBasic предпологаю используются инструкции ASM ассемблера.
К каждой переменной Protected присваивается адресный байт (уровень расширения) - неужели X64?

0

5

Ev3658 написал(а):

Тут всё зависит от обработчика нейрона.

Пытаюсь сделать инструкцию логического нейрона x64.

Готовлюсь к заполнению памяти, очень сложно заполнить образ и сделать стандартную связку нейронов.

Будет не лишним знать пространство стека и используемое пространство, а может и инструкций.
К примеру в Bascom есть подобные механизмы, а в PureBasic предпологаю используются инструкции ASM ассемблера.
К каждой переменной Protected присваивается адресный байт (уровень расширения) - неужели X64?

По идеи локальные переменные должны быть в стеке,стек идёт в минус а переменные выше ,но тут как организована работа с стеком.
Ps:в х64 стек просто под адрес 8 байт,под аргументы можно разному организовать но стандартно наверное тоже по 8байт.
Стек это тупо ячейки память которая выделена наверное каждому программе?

Отредактировано Sergeihik (22.08.2021 21:15:55)

0

6

Есле у вас х64 то попробуйте это,по сути это указатель стека на память которая под него выделена.

Код:
Global u.q
Procedure x()
!mov qword [v_u],rsp
Debug u
endprocedure
!mov qword [v_u],rsp
Debug u
x()

ps:есле вы хотите имитировать работу стека то так и пишите а не про реальный стек что на компе.
Упрётся в любом случае в память что будет занимать этот стек но в любом случае больше физически установленной и не занятой он не задействует.

Отредактировано Sergeihik (23.08.2021 11:29:14)

0

7

Вообщем в процедуре стек будет забиваться ещёвсякими сохранёнными регистрами,
можно как вариант посмотреть как это будет работать из дллки.
но лучше в памяти тогда создать свой виртуальный стек если уж так хочится с его прообразом работать.

0


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Нейрообработчик из процедуры