Я не могу использовать RSP для ссылки на конец стека.
в моей системе (x86_64), когда я использую GDB, и RBP, и RSP указывают на один и тот же адрес памяти после помещения нового кадра стека, поэтому я не могу ссылаться на конец стека с помощью регистра RSP, поскольку он имеет то же значение, что и RBP. Я видел, что в других системах регистр RSP используется для отслеживания адреса конца стека, но, к сожалению, в моей GDB он так не работает.
Я использую этот небольшой код, чтобы проверить его:
#include <stdio.h>
void test_function(int a, int b, int c, int d) {
int flag;
char buffer[10];
flag = 31337;
buffer[0] = 'A';
}
int main(){
test_function(1, 2, 3, 4);
}
это то, что я получаю в GDB:
Обратите внимание, что в прологе функции в ассемблере для RSP также нет «под» операции.
Итак, мой вопрос: есть ли другой способ получить доступ к концу стека, если у меня нет регистра RSP?
Я все еще новичок в этом, я все время учусь, поэтому есть вещи, которые, возможно, я игнорирую или не понимаю.