[Assembler] Segment danych

Siema,

mam takie pytanie odnośnie segmentu danych:

http://en.wikipedia.org/wiki/Data_segment

Dlaczego obszar “Data” zawiera tylko zmienne globalne, bez statycznych ? Gdzie wobec tego znajdują się niby zmienne statyczne zainicjalizowane do innnej wartości niż zero ? Bo chyba nie na stosie, który przechowuje zmienne automatyczne lub stercie, która przechowuje zmienne dynamiczne tworzone new’em :stuck_out_tongue:

W BSS… Wystarczyło doczytać kilka kolejnych zdań w przytoczonym artykule. :stuck_out_tongue:

:lol:

Racja :oops:

Napisałem i przepadałem taki kod:

int global_zero;

int global_nonzero = 8;


const int dycha = 10;


int licznik()

{

  static int static_zero;

  static int static_nonzero = 255;


  static_zero++;


  if (static_zero == static_nonzero)

    static_zero = 0;


  return static_zero;

}


int main()

{

  int wynik = licznik();


  return 0;

}

okazało się, że

0x0000084 wynik


0x80483b4 licznik


0x80484c0 dycha


0x804a010 global_nonzero

0x804a014 static_nonzero


0x804a020 static_zero

0x804a024 global_zero

Wygląda na to, że lokalna zmienna statyczna pod względem alokacji zachowuje się jak zmienna globalna, więc statyczne niezerowe lecą do Data… chyba :slight_smile:

Znalazlem taki temat:

http://www.velocityreviews.com/forums/t … ables.html

Chodzi o posty #5 i #6.

Co z tego, że nie ma to znaczenia w przypadku języka C (post #6) :?: Może mieć znaczenie w ASM…