Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пт мар 29, 2024 04:19

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Camelforth, как DEPTH может быть = 0 если есть TOS ?
СообщениеДобавлено: Пн окт 21, 2013 15:29 
Не в сети

Зарегистрирован: Пн сен 30, 2013 15:11
Сообщения: 17
Благодарил (а): 4 раз.
Поблагодарили: 0 раз.
Разбираюсь с обычной механникой стека, похоже я недостаточно умён (глуп), чтобы понять как это работает, крыша едет не спеша.

Допустим число элементов определяется как разность начального и текущего указателей стека данных, но последний элемент сидит в TOS, а как оно понимает, что на стеке вообще
ничего нет?

Зачем в Camelforth MSP430 в расчётах DEPTH (в слове S0) попадается UAREA, почему бы просто не вычесть PSP из PSTACK и поделить на 2 ? Там еще зачем то замешан указатель UP. Тоесть слово S0 делает зачем то

1) поместить на стек PSTACK-UAREA (начало стека - размер пользовательской области)
2) прибавить &UP (указатель пользовательской области).

ЗАЧЕМ ???? :shock:

С уважением
XSet


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Camelforth, как DEPTH может быть = 0 если есть TOS ?
СообщениеДобавлено: Пн окт 21, 2013 16:12 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1261
Благодарил (а): 3 раз.
Поблагодарили: 19 раз.
xset писал(а):
Допустим число элементов определяется как разность начального и текущего указателей стека данных, но последний элемент сидит в TOS, а как оно понимает, что на стеке вообщеничего нет?

Если в DEPTH = 0, то на стеке пусто. На то, что вершина регистр - можно не обращать внимания, если конечно не писать ассемблерных слов.
xset писал(а):
UAREA

Похоже, что это USER-AREA — т.е. пользовательская область данных, используется для многопоточности.

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc



За это сообщение автора VoidVolker поблагодарил: xset
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Camelforth, как DEPTH может быть = 0 если есть TOS ?
СообщениеДобавлено: Пн окт 21, 2013 16:19 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
xset писал(а):
Допустим число элементов определяется как разность начального и текущего указателей стека данных, но последний элемент сидит в TOS, а как оно понимает, что на стеке вообще
ничего нет?

Вряд ли она что то специально понимает и контролирует этот момент (если только нет каких то аппаратных вариантов)

xset писал(а):
Зачем в Camelforth MSP430 в расчётах DEPTH (в слове S0) попадается UAREA, почему бы просто не вычесть PSP из PSTACK и поделить на 2 ? Там еще зачем то замешан указатель UP.

Если сделано то наверное как то учитывается выделяемая (выделенная) область памяти для пользовательских переменных (обычно каких то задач):)

P.S. Изменить (выкинуть) "неинтересные" моменты тоже можно после рассмотрения где они были задействованы или предполагались для использования в дальнейшем
Форт коде.



За это сообщение автора KPG поблагодарил: xset
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Camelforth, как DEPTH может быть = 0 если есть TOS ?
СообщениеДобавлено: Пн окт 21, 2013 16:33 
Не в сети

Зарегистрирован: Пн сен 30, 2013 15:11
Сообщения: 17
Благодарил (а): 4 раз.
Поблагодарили: 0 раз.
Я сейчас трассирую выполнение при пустом стеке, получается в S0 заложено отрицательное число PSTACK-UAREA (это смещение), а его действие прибавляет к этому (отрицательному) числу указатель пользовательской области, которая в памяти идёт за стеком данных. В итоге получаем при исходной пользовательской области тот же PSTACK и DEPTH похоже всегда возвращает значение >0, т.к. собственное значение DEPTH учитывается.

Цитата:
Если сделано то наверное как то учитывается выделяемая (выделенная) область памяти для пользовательских переменных (обычно каких то задач):)


Похоже на то. Спасибо, а то я мозг весь измучил уже. :cry:


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

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


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

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