logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak sprawdzić ilość wolnego miejsca na stosie i stercie w C?

squelch 15 Sie 2017 14:20 1344 10
  • #1 16643335
    squelch
    Poziom 11  
    Witam napisałem prosty kod
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Wywołuje w tym kodzie funkcję która zapełnia nam stos i stertę bajtami 0xFA. Znajduje się też tam funkcja sprawdzająca która sprawdza ile jeszcze mamy bajtów do wykorzystania w tym obszarze. Funkcję tę wywołuje w main oraz w funkcji h. Kiedy wywołam tą funkcję z funkcji h() to powinno pokazać że mamy o 2 bajty mniej wolnego miejsca bo h odkłada adres na stosie. Specjalnie żeby kompilator nie wstawił jej jako inline taka optymalizacja jego jest zadeklarowana jako noinline o dziwo po odpaleniu na lcd pokazuje równe wartości czyli spr() z funkcji h() pokazuje tyle samo wolnego miejsca co spr() z main. A powinno się różnić o te 2 bajty, chyba że ja czegoś nie biorę pod uwagę?

    Pozdrawiam
  • #2 16643387
    Konto nie istnieje
    Konto nie istnieje  
  • #3 16643505
    squelch
    Poziom 11  
    A gwiazdki zapomnialem

    Dodano po 12 [minuty]:

    Piotrus_999 napisał:

    A kodu wygenerowanego to sobie nie łaska sprawdzić?

    nie bo sporo nie rozumiem z asemblera, może za niedługo się z nim rozprawię
    coś mi gwiazdek nie przekopiowało tam na sto procent wczoraj były gwiazdki kod w ostatecznej formie
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Dodano po 37 [sekundy]:

    no i dalej nic
  • #4 16643800
    squelch
    Poziom 11  
    ten kod był umieszczony jako komentarz w as i pewnie miał problemy z odtworzeniem tego, coś mam dziwnie ustawione na tym kompie że komentarze mi się rozjeżdżają.

    Ale wracając do sprawy.
    Piotrus999 napisał:

    A jaki "hak"

    void fun(void) __attribute__((naked,optimize("Os"),section(".int1")));


    "warninigi" trzeba czytać a nie olewać albo wyłaczać.


    nie mam żadnego warna.
  • Pomocny post
    #5 16643931
    Konto nie istnieje
    Konto nie istnieje  
  • #7 16644143
    Konto nie istnieje
    Konto nie istnieje  
  • #9 16644205
    Konto nie istnieje
    Konto nie istnieje  
  • #10 16644246
    squelch
    Poziom 11  
    Cytat:

    Jak zapiszesz smieciami 20 bajtów w górę, a pózniej tylko zapiszesz dwa to odkryjesz to samo miejsce.

    Jak to możliwe.

    Cytat:

    Ale jak wiesz więcej to dalej walcz sam

    Wcale nie twierdze że wiem więcej. to jest forum i na nim wyraża się swoje pomysły mi się wydaję że wolne miejsce nie powinno być równe argumenty ci podałem u góry.
  • #11 16644268
    Konto nie istnieje
    Konto nie istnieje  
REKLAMA