Azarien napisał(a)
To niemądry pomysł, ale i tak tam nie ma adresu powrotnego ;-)
Z pierwszą częścią tego zdania zgadzam się w 100%, druga jest nie prawdziwa dla x86. Po pierwsze stos jest liczony w dół. W trakcie wywoływania funkcji na stos wrzucane są parametry, a następnie adres powrotny. Tutaj odwołuje się do kolejnego elementu stosu (przesunięcie 4 bajtowe) względem jedynego parametru, czyli właśnie do adresu powrotnego (na potwierdzenie tego wcześniej przytoczony program wypisuje u mnie ok, ale tylko przy liczbie 16 w drugiej części polecenia).
Jest to chyba jednak złe rozwiązanie tego zadania, bo dla praktycznie rzadnych parametrow nie udało mi się uzyskać pozytywnej odpowiedzi serwera, mimo uwzględnienia w testowaniu błędu słusznie wytkniętego przez Wibowita. Może jest to kompilowane na 64 bitach (nie wiem czy wtedy moje założenie o adresach jest słuszne, bo o ile dobrze pamiętam to pierwsze parametry funkcji w architekturze x86-64 przekazywane są w rejestrach).