2013-03-15 5 views

ответ

31

Стек всегда находится в ОЗУ. Существует указатель стека, который хранится в регистре в ЦП, который указывает на вершину стека, то есть адрес местоположения в верхней части стека.

+6

+1 Для указания того, что регистр из процессора указывает на стек –

8

Стек находится в ОЗУ, а не внутри ЦПУ. Сегмент предназначен для стека, как показано на следующей схеме:

enter image description here

От Wiki:

Область стека содержит стек программы, структуру LIFO, обычно располагаться в верхних части памяти.

3

О каком процессоре вы говорите?

  1. Некоторые может содержать память, которая является используется для callstacks, некоторые содержат память, может быть используется для callstacks, но требуют ОС для выполнения коды управления CallStack, и другие содержат не перезаписываемых памятей вообще. Например, архитектура x86 имеет один или несколько code caches and data caches, встроенных в CPU.

  2. Некоторые процессоры или ОС выполняют операции, которые делают определенные области памяти неисполняемыми. Чтобы предотвратить переполнение буфера на основе стека, например, многие операционные системы используют hardware and/or software-based data execution prevention, что может помешать работе стековой памяти в качестве кода. Некоторый не; Вполне возможно, что строка кэша данных процессора x86 может использоваться для хранения как стоп-кода, так и кода, который должен быть выполнен в быстрее.

  3. EIP звучит как регистр архитектуры процессора IA32. Если вы имеете в виду IA-32, то да, это операция с ЦП, хотя многие операционные системы будут переключать ее в/из ОЗУ для эмуляции многозадачности.