• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Dynamiczna alokacja pamięci. Reprezentacja w exe.

0 głosów
89 wizyt
pytanie zadane 2 lipca 2018 w C i C++ przez Hiskiel Pasjonat (22,800 p.)
zamknięte 2 lipca 2018 przez Hiskiel

Witam.

Jak wygląda dynamicznie alokowana pamięć w exe? Mianowicie z tego co mi wiadomo. W ogromnym uproszczeniu header exe wygląda tak:

MZ SRUTUTU
Informacje gdzie zaczyna się kod i gdzie zaczynają się dane, 
gdzie kończy się kod
SRUTUTU
DANE
KOD
tutaj coś tam jeszcze było, chyba tabela importów

Gdy mamy załóżmy taki program w wymyślonym języku:

start:
create int a=100;
create int b=11;  

Nie czytajcie tych głupot > [To wiemy, że kod będzie się zaczynał na offsecie rozmiar nagłówka + rozmiar danych

Jednakże podczas dynamicznej alokacji, która następuje w TRAKCIE działania programu, może być różnie. Np. program typu baza danych, gdzie przed zapisaniem do pliku wszystkie dane znajdują się w RAM'ie. Użytkownik może sobie zażyczyć 2000 elementową tablicę, np. na wszystkich klientów. Co wtedy?] < Nie czytajcie tych głupot

Gdyby ktoś byłby w stanie mi to wytłumaczyć byłbym bardzo wdzięczny.

 

Pozdrawiam. 

komentarz zamknięcia: adrian17 rozwiał moje wątpliwości.
komentarz 3 lipca 2018 przez Criss Mędrzec (171,380 p.)
Nie, kwadratowe nawiasy oznaczają odwołanie do pamięci pod adresem określonym wewnątrz kwadratowych nawiasów

mov rbp, [rsp] zapisałoby w rbp 8 bajtów z pod adresu zapisanego w rsp
komentarz 3 lipca 2018 przez Hiskiel Pasjonat (22,800 p.)
No... Właśnie.

mov rbp, [adres rsp]
komentarz 3 lipca 2018 przez Criss Mędrzec (171,380 p.)
mov rbp, [rsp] zapisałoby w rbp 8 bajtów z pod adresu zapisanego w rsp.

Wybacz, ale chyba nie potrafie ci tego wytłumaczyć jeśli teraz nie rozumiesz.. Ale dobra rada: nie kłóć się z kompilatorem jaki kod asm powinien generować :P
komentarz 3 lipca 2018 przez Hiskiel Pasjonat (22,800 p.)
A w ten sposób..

Rozumiem. [reg] to coś w stylu jak w c++ int* b = *a;

a mov rbp, rsp int* b = &a;

Rozumiem..

A a propos tego kompilatora. Nie chcę się z nim kłócić. Głównym zamysłem tego mojego kompilatora (to miałby być taki o projekt) było, żeby tłumaczyć kod na asm, każda libka byłaby w asmie napisana, a potem na opcode. Wygenerować elfa, czy tam exe i sruuu.
komentarz 3 lipca 2018 przez Hiskiel Pasjonat (22,800 p.)
Dziękuję bardzo za pomoc.

Podobne pytania

+3 głosów
2 odpowiedzi 120 wizyt
pytanie zadane 9 września w Inne języki przez Mavimix Mądrala (5,190 p.)
0 głosów
1 odpowiedź 51 wizyt
pytanie zadane 5 sierpnia w Python, Django przez marcinconn Obywatel (1,360 p.)
0 głosów
1 odpowiedź 92 wizyt
pytanie zadane 28 lipca w Python, Django przez Dominoday Początkujący (350 p.)
Porady nie od parady
Zadając pytanie postaraj się o szczegółowe opisanie problemu oraz udostępnienie wszystkich istotnych informacji (kody źródłowe, zrzuty ekranu itp.).Opisanie problemu

66,509 zapytań

113,272 odpowiedzi

239,888 komentarzy

46,644 pasjonatów

Przeglądających: 256
Pasjonatów: 15 Gości: 241

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...