gcc можно ли достать аргументы функции со стека?

Компьютеры программирование программы Linux windows

#include <iostream>
using namespace std;

void foo(int v1, int v2)
{
int tmp=10;

//<--- нужно получить доступ к аргументам функции,
// не используя их имен

//если закомментировать взятие адреса у аргументов
//то результат будет не корректным
long int delta1 = &tmp-&v1;
long int delta2 = &tmp-&v2;

cout<<"v = "<<*(&tmp-delta1)<<endl;
cout<<"v = "<<*(&tmp-delta2)<<endl;
}


int main()
{
std::cout << "Hello, world!\n";
foo(15,30);
}

Требуется решение, которое пусть и не кросс-компиляторное.
Но хотя бы просто стабильно работающее независимо от настроек оптимизации.
Хотя бы при использовании компилятора gcc
Ответы:
asm pop*/push потом обратно(зачистка всё равно на компиляторе, не стоит мешать - краш);


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.