Jak mogę określić adres zwrotny na stosie?

Wiem, że jeśli jestem w jakiejś funkcjifoo() który nazywa się gdzieśbar() funkcja, wtedy ten adres zwrotny jest pchany na stosie.

    #include <stdio.h>

    void foo()
    {
            unsigned int x;
            printf("inside foo %x\n", &x);
    }
    int main()
    {
            foo();
            printf("in main\n");
            return 0;
    }

W powyższym kodzie otrzymam adres pierwszej wciśniętej zmiennej lokalnej na stosie, gdy funkcja foo jest aktywna. Jak mogę uzyskać dostęp do adresu zwrotnego (głównego o nazwie foo), który jest pchany gdzieś przed tą zmienną na stosie? Czy ta lokalizacja jest poprawiona i można uzyskać do niej dostęp w stosunku do pierwszej zmiennej lokalnej? Jak mogę to zmienić?

EDYCJA: Moje środowisko to Ubuntu 9.04 na procesorze x86 z kompilatorem gcc.

questionAnswers(6)

yourAnswerToTheQuestion