Сборка - Как использовать переменную, помещенную в стек - PullRequest
0 голосов
/ 16 февраля 2020

Немного неприятностей. У меня есть функция, которая называется так:

;  Calc(&average, &ErrorMargin) Equivalent:
    push    ErrorMargin
    push    average
    call    Calc

;ErrorMargin and average are both declared with "dd"

Как бы я на самом деле изменил значения этих переменных, которые были помещены в стек? Буду ли я использовать ESP и go через стек? Буду ли я вместо этого вставлять их в реестр? Как, черт возьми, я могу получить доступ к этим переменным?

Спасибо!

1 Ответ

0 голосов
/ 17 февраля 2020

Я понял это с помощью понимания, данного комментарием У. Чанга.

Переменная Error Margin доступна через:

mov rdx, [rbp-8]

И переменную Average доступ осуществляется с помощью:

mov rdx, [rbp-16]

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...