eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaC - łańcuchy tekstowe definiowane w parametrach funkcjiRe: C - łańcuchy tekstowe definiowane w parametrach funkcji
  • Data: 2022-08-26 20:25:57
    Temat: Re: C - łańcuchy tekstowe definiowane w parametrach funkcji
    Od: Atlantis <m...@w...pl> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    On 26.08.2022 16:40, Dawid Rutkowski wrote:

    > W AVR - i pewnie w innych harvardach - jest możliwość zrobienia tak,
    > że nie będzie używany RAM - send(PSTR("tekscik z ROMu"));
    > a jako argument leci wskaźnik - ale do flasha.


    Tak to było robione na części ośmiobitowych mikrokontrolerów, takich jak
    PIC16/PIC18 albo właśnie AVR (i w związku z tym również większość płytek
    Arduino). Żeby uniknąć kopiowania do RAM-u, trzeba było deklarować
    łańcuchy tekstowe za pomocą specjalnych makrodefinicji. Istniały też
    specjalne wersje funkcji do operacji na łańcuch, przygotowane z myślą o
    nich.

    W przypadku nowoczesnych układów 32bitowych (STM32, PIC32,
    ESP8266/ESP36) nie ma już takiej potrzeby, bo zarówno flash jak i RAM
    stanowią część tej samej przestrzeni adresowej i można się do nich
    odwoływać za pomocą tych samych wskaźników, a łańcuchy zdefiniowane jako
    const char* trafiają do flasha.
    Oczywiście trzeba uważać na to co się robi, bo np. próba zapisu pod
    adres we flashu spowoduje rzucenie wyjątku.

    Moje pytanie dotyczyło czegoś innego - chciałem się upewnić, czy
    faktycznie łańcuch zdeklarowany jako argument funkcji (a nie jawnie,
    jako globalna stała z kwalifikatorem const) zawsze będzie zapisany we
    flashu. Wyobraźmy sobie np. hipotetyczną sytuację:

    Send("Lights on");
    Send("Lightf off");

    Czy nie istnieje np. ryzyko, że kompilator spróbuje to niejawnie
    zoptymalizować i zdefiniuje sobie we flashy łańcuchu "Lights ", "on"
    oraz "off", a potem będzie tworzył ich kombinacje na stosie, przed
    przekazaniem w argumencie funkcji?

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: