2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1, 2, 3, 4
 
 Re: Что такое аппаратный стек
Сообщение14.06.2018, 14:04 


06/04/18

323

(Оффтоп)

arseniiv, точно запятыми. Все, что последует за -Wl,, будет указанием линкеру, а не компилятору, но до первого попавшегося пробела. Из-за этого несколько параметров пробелами отделить нельзя.

 Профиль  
                  
 
 Re: Что такое аппаратный стек
Сообщение14.06.2018, 14:06 


08/10/10
50
Qlin в сообщении #1319836 писал(а):
Видимо есть некий системный минимум, да?
The operating system rounds up the specified size to the nearest multiple of the system's allocation granularity (typically 64 KB). To retrieve the allocation granularity of the current system, use the GetSystemInfo function.
Так что минимум есть.

-- Чт июн 14, 2018 15:09:42 --

Qlin в сообщении #1319836 писал(а):
Как это нет?

Это не ограничение, а значение по умолчанию. Вы же сами убедились: захотели стек 8MB - получили.

-- Чт июн 14, 2018 15:14:54 --

iakovk в сообщении #1316888 писал(а):
При этом, если попытаться получить доступ к этой странице, возникнет исключение STATUS_GUARD_PAGE_VIOLATION.
Таким образом, выделение памяти под стек осуществляется по мере надобности: когда текущая память исчерпана, поток натыкается на спецстраницу, получает исключение STATUS_GUARD_PAGE_VIOLATION и где-то в недрах системы (я не знаю где) выделяется память из резервированного региона (если она есть).

Поправка. По всей видимости, при работе именно со стеком исключение STATUS_GUARD_PAGE_VIOLATION не используется и расширение стека выполняется непосредственно обработчиком страничных отказов.

 Профиль  
                  
 
 Re: Что такое аппаратный стек
Сообщение01.08.2018, 18:00 


09/05/10
122
Ростов-на-Дону
Программный стек - это стек управляемый программой.
Аппаратный стек - это стек управляемый устройством, имеющим доступ к оперативной памяти. Иногда, аппаратным стеком
могут называть какой-нибудь вычислительный кластер.

Qlin в сообщении #1316167 писал(а):
стеком может служить абсолютно любая
часть оперативной памяти.

Нет. Абсолютно любая не может. Всегда есть чем-то занятая область памяти, даже при начальном запуске.

Qlin в сообщении #1316167 писал(а):
ОС выделяет по одному стеку на
каждую выполняемую программу. Все верно?

Нет. Что за ОС и какая программа, процессор какого поколения и архитектуры? Программа может быть составлена так, что ей
вообще стек не нужен. Несколько программ могут использовать одну, общую область памяти под свои общие нужды - стек или не
стек, какая разница? Это не чёткое понятие "программа", даже для самой ОС, а команды для работы со стеком могут
отсутствовать и реализация стека в руках программиста.

Qlin в сообщении #1316167 писал(а):
Но я не понимаю, почему ограничение
в 1 Мб не срабатывает.

Нет такого ограничения. Это значение по умолчанию, определённое в настройках компоновщика.

Pavia в сообщении #1316171 писал(а):
Аппаратный стек это стек у которого
есть специальные регистры. Можно ещё дополнить есть специальные машинные команды.

Нет надобности в таком стеке, с регистрами. Это просто очередь. :-) Команды могут присутствовать в специализированных
системах, а могут отсутствовать.

yk2ru в сообщении #1316208 писал(а):
Если уж "аппаратный стек", то таковой должен быть связан с аппаратурой или "железом", если аппаратный стек реально существует. В последних же сообщениях разговор пошёл про программный стек.

Верно.
realeugene в сообщении #1316213 писал(а):
В некоторых древних примитивных процессорах стек, например, адресов возвратов из подпрограмм находился в отдельных аппаратных регистрах, отличных от памяти данных.

Это где? Пример пожалуйста.
realeugene в сообщении #1316213 писал(а):
Стек, реализуемый при помощи выделенного регистра стека, хранящего указатель в общей памяти, и отдельных команд процессора для работы с этим регистром, тоже называют "аппаратным".

Чё за бред? Нет никакого выделенного регистра стека. Есть сегментный регистр "SS". Основное назначение которого - работа
со стеком. А указатель хранится в регистре "SP", а никак не в общей памяти!
Dmitriy40 в сообщении #1316217 писал(а):
Ну и про сам термин аппаратный стек. Как выше только что сказали, у него может быть два значения: а) отдельная память в процессоре (очень ограниченного объёма, физически ограниченная по размеру), не память данных и не регистры, а нечто типа встроенного кэша; б) регистры в процессоре, которые указывают куда-то в память данных, т.е. в этом случае стек является частью памяти данных (и часто с отдельными специальными командами для упрощения работы с ним). Во втором случае часто стек нужен для сохранения адресов возвратов из процедур и функций, а хранение данных в нём - дополнительная удобная функция, использующаяся не во всех процессорах, не во всех ОС и даже не во всех программах.

Фантазировать не надо.

 Профиль  
                  
 
 Re: Что такое аппаратный стек
Сообщение01.08.2018, 18:38 
Заслуженный участник


20/08/14
11780
Россия, Москва
Tod Leben в сообщении #1329989 писал(а):
Нет. Абсолютно любая не может. Всегда есть чем-то занятая область памяти, даже при начальном запуске.
Во многих микроконтроллерах - может, абсолютно любая часть ОЗУ. Потому что программа сидит во flash (ПЗУ) и места в ОЗУ не занимает.
При выполнении кода BIOSа (прямо из ПЗУ) такое может случаться и на обычном персональном компьютере. После сигнала RESET для процессора всё ОЗУ пустое и даже вообще может физически отсутствовать.
Так что Вы слишком уж обобщаете частное утверждение. Или Вы не в курсе существования чего-то ещё кроме архитектур Intel/AMD x86/x64?
Tod Leben в сообщении #1329989 писал(а):
Нет надобности в таком стеке, с регистрами. Это просто очередь.
И однако на x86/x64 это именно стек (LIFO), а не очередь (FIFO). Разберитесь с терминами. И надобность в нём есть (для вызова процедур и прерываний).
Tod Leben в сообщении #1329989 писал(а):
Это где? Пример пожалуйста.
Пожалуйста: семейства МК PIC10/12/14/16/18. Стек возвратов аппаратный глубиной от 2 до сколько-там-не-помню-в-новых и именно в виде регистров (программно недоступных, кроме иногда вершины стека), не в памяти данных.
Tod Leben в сообщении #1329989 писал(а):
Чё за бред?
Это не бред, это ошибка формулировки. Имелось в виду не что сам указатель хранится в памяти, а что указатель указывает в память. А хранится да, в регистре (R)(E)SP.
Tod Leben в сообщении #1329989 писал(а):
Фантазировать не надо.
Поясните в чём фантазии?

 Профиль  
                  
 
 Re: Что такое аппаратный стек
Сообщение06.08.2018, 23:27 


27/08/16
10218
Tod Leben в сообщении #1329989 писал(а):
а никак не в общей памяти
Указатель, указывающий в общую память.

-- 06.08.2018, 23:33 --

Tod Leben в сообщении #1329989 писал(а):
Это где? Пример пожалуйста.

Историю нужно знать.
Intel 4004

 Профиль  
                  
 
 Re: Что такое аппаратный стек
Сообщение07.08.2018, 00:42 
Заслуженный участник


20/08/14
11780
Россия, Москва
О, круто, спасибо, мне тоже интересно, я и не знал про такие детали архитектуры 4004 (как-то не вникал в него, сразу с 8080 и PDP-11 начал).

 Профиль  
                  
 
 Re: Что такое аппаратный стек
Сообщение07.08.2018, 00:47 


27/08/16
10218
Dmitriy40 в сообщении #1316217 писал(а):
Во втором случае часто стек нужен для сохранения адресов возвратов из процедур и функций, а хранение данных в нём - дополнительная удобная функция, использующаяся не во всех процессорах, не во всех ОС и даже не во всех программах.
К слову, в архитектуре ADSP-2100 было четыре различных специализированных стека на отдельных банках регистров, и ни один не был предназначен для хранения данных.
https://lr.ttu.ee/~juliad/IRZ0070/21xxUM/Chap_12.pdf страница 5
У ADSP-2185 ещё статус "Production".

 Профиль  
                  
 
 Re: Что такое аппаратный стек
Сообщение07.08.2018, 01:02 
Аватара пользователя


07/02/12
1438
Питер

(Оффтоп)

Dmitriy40 в сообщении #1330966 писал(а):
как-то не вникал в него, сразу с 8080 и PDP-11 начал
Ух. Если не секрет, с каких платформ на базе 8080 начинали?

 Профиль  
                  
 
 Re: Что такое аппаратный стек
Сообщение07.08.2018, 01:07 


27/08/16
10218
Dmitriy40 в сообщении #1330966 писал(а):
я и не знал про такие детали архитектуры 4004

У i8008 была очень похожая архитектура, только восьмибитная. Со стеком на регистрах. В i8080 появился указатель стека.

 Профиль  
                  
 
 Re: Что такое аппаратный стек
Сообщение29.12.2018, 10:11 


24/01/09
1238
Украина, Днепр
realeugene в сообщении #1316213 писал(а):
В некоторых древних примитивных процессорах стек, например, адресов возвратов из подпрограмм находился в отдельных аппаратных регистрах, отличных от памяти данных.

Не только в древних, типа Б3-34. В части до сих пор выпускающихся PIC-ов именно так.

(Оффтоп)

А наиболее аппаратный, наверное, в автомате калашникова, или помповике каком. В первом ещё и аппаратная очередь.

 Профиль  
                  
 
 Re: Что такое аппаратный стек
Сообщение14.01.2019, 14:59 


27/08/16
10218
Theoristos в сообщении #1364442 писал(а):
В части до сих пор выпускающихся PIC-ов именно так.

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

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 56 ]  На страницу Пред.  1, 2, 3, 4

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



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

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


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

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group