получение начального адреса стека в программировании сборки - PullRequest
2 голосов
/ 01 марта 2010

возможно ли получить эффективный начальный адрес стека после завершения таких операций стека, как push и pop в программировании сборки?

Ответы [ 2 ]

1 голос
/ 01 марта 2010

Соглашение состоит в том, чтобы сохранять (E) SP в (E) BP в начале вашей функции и использовать (E) BP для адресации локальной переменной.

0 голосов
/ 01 марта 2010

Простейший случай - просто сохранить начальный указатель стека на некоторую переменную для доступа к нему при необходимости. Если это не так, используйте API для конкретной платформы, например VirtualQuery в Windows, используя текущее значение SP в качестве первого параметра. Базовый адрес будет в поле BaseAddress структуры MEMORY_BASIC_INFORMATION. На posix задача может быть выполнена с использованием функций pthread

...