[linux] Stack v C
Andrej Hosna
adino na uid0.sk
Úterý Květen 2 20:59:48 CEST 2006
povedzme ze pri i386 linux architekture by to mohlo vyzerat takto
int main (void)
{
// pozor vramci funkcie
int prva_premenna_ukaze_zaciatok_stacku = 0;
int a = 1;
int b = 2;
int * p;
// ako mas moznosti vidiet nas stack rastie nadol
printf("%p %p %p\n", &prva_premenna_ukaze_zaciatok_stacku, &a, &b);
// a potom sa s premennymi nanom vieme hrat jednoducho
p = &prva_premenna_ukaze_zaciatok_stacku;
*(p-2) = *(p-1);
printf("a=%d b=%d\n", a, b);
}
// vystup
// 0xbfcc7564 0xbfcc7560 0xbfcc755c
// a=1 b=1
On Tuesday 02 May 2006 19:56, Peter Fodrek wrote:
> Zdravim!
>
> Prosim Vas o radu
> Brat dostal uloha pristupovat k premennym v C nie cez ich mena, ale cez ich
> poziciu na stack-u a zmanipulovat stack. (cez int *=0x..... cize cez
> adresu v RAM to viem, ale nejaky manual co by to robil cez stack som
> nenasiel- okrem mne nie velmi vyhovujuceho assembler-u cez pop a push)
>
> vie niekto ci sa to da aj inak ako cez
>
> asm
> {
> };
>
> ?
>
> S vdakou
>
> Peto...
Další informace o konferenci linux