Направление стека старшего адреса памяти на младший адрес памяти - PullRequest
0 голосов
/ 28 июля 2011

Направление стека (с более высокого адреса памяти на более низкий адрес памяти или с более низкого адреса памяти на более высокий адрес памяти) зависит от архитектуры машины Пример Intel: более высокий адрес памяти для более низкого адреса памяти SPARC: нижний адрес памяти к старшему адресу памяти

Есть ли способ, с помощью которого мы можем изменить направление выделения памяти стека с помощью кода.

Спасибо.

Ответы [ 3 ]

0 голосов
/ 28 июля 2011

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

0 голосов
/ 23 декабря 2011

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

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

0 голосов
/ 28 июля 2011

В общем, управление стеком осуществляется компилятором (если мы говорим о чем-то вроде C или C ++ здесь).Однако ISA может предложить помощь, например, инструкции push и pop на x86.

Невозможно сделать это из C или C ++, если ваш компилятор не предлагает непереносимое расширение языка илиопция командной строки для управления этим (я не понимаю, почему это так, потому что изменение этого параметра сделает вашу программу / библиотеку несовместимой со всеми другими программами / библиотеками!)

...