Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 3 maja 2025, o 08:24


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 20 ] 
    Autor Wiadomość
    PostNapisane: 2 kwi 2018, o 11:37 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 26 maja 2017
    Posty: 143
    Pomógł: 0

    Mam problem ze zrozumieniem jeśli sama nazwa bez nawiasów kwadratowych oznacza adres to po przesłaniu do funkcji ślad po tym adresie znika nie ma go nigdzie w pamięci.


    W pamięci ram zajmuje miejsce tylko definicja tablicy na samej górze 8 baktów w obszarze zmiennych globalnych a gdzie miejsce na adres do tej tablicy?

    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 kwi 2018, o 12:05 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 26 maja 2017
    Posty: 143
    Pomógł: 0

    zubik napisał(a):
    procek87 napisał(a):
    przesłaniu do funkcji ślad po tym adresie znika nie ma go nigdzie w pamięci.
    Cały czas istnieje, w uproszczeniu można powiedzieć że zawiera się w nazwie tablicy. Jeśli w main zrobisz sobie taką definicję zmiennej:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
    to w niej dostaniesz adres na pierwszy element tablicy.


    okej ale jeśli zdefiniuje tablice złożoną z 8 elementów uint8_t jedno-bajtowych

    uint8_t tab[] = {1,2,3,4,5,6,7,8};

    to gdzie zapisywany jest adres tablicy tab skoro zajmuje ona 8 bajtów gdzie te dwa bajty na adres?

    no i jak to się później ma z przekazywaniem do funkcji ?



    Ostatnio edytowano 2 kwi 2018, o 12:13 przez procek87, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 kwi 2018, o 12:14 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27378
    Lokalizacja: Szczecin
    Pomógł: 1043

    procek87 napisał(a):
    to gdzie zapisywany jest adres tablicy tab skoro zajmuje ona 8 bajtów gdzie te dwa bajty na adres?

    straszliwie mieszasz

    albo nie wiesz co to wskaźnik - polecam jednak zajrzeć do Bluebooka do rozdziału o wskaźnikach

    sama NAZWA tablicy - w tym przypadku "tab" jest wskaźnikiem na pierwszy element twojej tablicy, zatem skoro przekazujesz do funkcji

    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    to właśnie przekazujesz WSKAŹNIK na pierwszy element tej tablicy ... innymi słowy ADRES w pamięci RAM od którego rozpoczynają się elementy twojej tablicy i ten ADRES (WSKAŹNIK) MUSI być dwubajtowy - bo jakbyś zaadresował pamięć większą niż 255 komórek

    ------------------------ [ Dodano po: 1 minucie ]

    żeby natomiast przekazać adres drugiego elementu tablicy do funkcji to trzeba go już pozyskać za pomocą operatora &

    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    i masz adres drugiego elementu tablicy

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 kwi 2018, o 12:16 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 paź 2014
    Posty: 1033
    Lokalizacja: Trójmiasto
    Pomógł: 190

    A po co ma być gdzieś przechowywany jej adres. W C poprostu zostało przyjęte że jeśli to tablia a nie wpisujesz po jej nazwie nawiasów z numerem jej elementu to kompilator wie że programiście chodzi o adres pierwszego jej elementu -takie uproszczenie dla programisty, i tak jak chcesz przekazać zmienną przez wskaźnik musisz wstawić operator pobierania adresu tak sama nazwa tablicy jest traktowana jak równoważny zapis dla tablic.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 kwi 2018, o 12:17 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27378
    Lokalizacja: Szczecin
    Pomógł: 1043

    xentis napisał(a):
    A po co ma być gdzieś przechowywany jej adres.

    tzn akurat w przypadku

    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    to ten właśnie adres (wskaźnik) jest przechowywany w pamięci RAM na stosie - zostaje utworzony gdy funkcja startuje a niszczony gdy funkcja kończy swój żywot

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 kwi 2018, o 12:20 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 26 maja 2017
    Posty: 143
    Pomógł: 0

    czyli przesyłając tablice miejsce na adres nie zostaje zarezerwowane , a przesyłając poprzez wskaźnik do funkcji już tak?

    Jezusiu pomieszało mi się całkiem ;)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 kwi 2018, o 12:35 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 paź 2014
    Posty: 1033
    Lokalizacja: Trójmiasto
    Pomógł: 190

    Nie, wstawiając jako argument funkcji samą nazwę tablicy (czyli traktując argument jako wskaźnik) to na stosie jest odkładany jej dwubajtowy adres, a jeśli jako argument funkcji podasz nazwę tablicy i w nawiasie konkretny numer jej komórki, wówczas na stosie zostanie odłożona wartość jaka w danej komórce się znajdowała.
    W obu przypadkach miejsce jest zajmowane na stosie albo na wskaźnik, albo na samą wartość zmiennej. Ale podkreślić tu trzeba że na STOSIE czyli w liczniku zajętości RAM po kompilacji tego nie widać.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 kwi 2018, o 13:18 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 26 maja 2017
    Posty: 143
    Pomógł: 0

    Nie widać zajętośc
    Cytuj:
    Ale podkreślić tu trzeba że na STOSIE czyli w liczniku zajętości RAM po kompilacji tego nie widać.


    Aha to dlatego tego nie widze tych 2 bajtów po przekazaniu do funkcji w informacji po kompilacji , ale dlaczego tak jest.

    Dlaczego tworząc wskaźnik jest rezerwowane dodatkowe miejsce a gdy przekazuje tablice nie widać nic.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 kwi 2018, o 13:39 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27378
    Lokalizacja: Szczecin
    Pomógł: 1043

    Cytuj:
    Dlaczego tworząc wskaźnik jest rezerwowane dodatkowe miejsce a gdy przekazuje tablice nie widać nic.

    a gdzie ty to chcesz widzieć ? skoro to jest dynamicznie na stosie tworzone w trakcie startu funkcji - zajrzyj pan do rozdziału o funkcjach w C i jak one działają - masz to na prawdę dobrze opisane. Co się dzieje od samego startu - jak się tego nie przeczyta to później przychodzą różne dziwne pytania do głowy ...

    Tak samo na stosie są tworzone kopie innych argumentów przekazywanych do funkcji przez wartość

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 kwi 2018, o 14:00 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 paź 2014
    Posty: 1033
    Lokalizacja: Trójmiasto
    Pomógł: 190

    procek87 napisał(a):
    Dlaczego tworząc wskaźnik jest rezerwowane dodatkowe miejsce a gdy przekazuje tablice nie widać nic.
    Jak tworzysz wskaźnik to poprostu tworzysz zmienną, która służy do przechowywania adresu. Natomiast argumenty funkcji działają zawsze tak samo czyli ich zawartość (obojętnie czy będzie typu wskaźnikowego czy każdego innego) zawsze lądują na stosie przy wywoływaniu funkcji, i giną po jej zakończeniu - i tego niestety nie zobaczysz w liczniku RAM-u - dla tego mając mało wolnego RAMu często początkujący się wykładają bo im STOS się wylewa w obszar zmiennych i program w procku zaczyna żyć własnym nieprzewidywalnym życiem (dzieje się tak w szczególności gdy wywołujesz łańcuchowo funkcję z funkcji z jeszcze innej funkcji... wszystkie argumenty kolejno wywoływanych funkcji z funkcji lądują na stosie, jak również adresy powrotu itd - STOS rośnie i rośnie). Poczytaj sobie dokładnie o potworze zwanym STOS - bo jego znajomość pozwala uniknąć wielu problemów np. gdy program się zachowuje nie tak jak trzeba i nie wiadomo dla czego...



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 kwi 2018, o 15:09 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 26 maja 2017
    Posty: 143
    Pomógł: 0

    po prostu myślałem że " licznik ram" też liczy to co odkładane na stos ,
    nie pomyślałem że oprócz argumentów , także i adresy tablic są odkładane tylko tego nie widać w liczniku ram . :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 kwi 2018, o 17:12 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27378
    Lokalizacja: Szczecin
    Pomógł: 1043

    procek87 napisał(a):
    adresy tablic są odkładane tylko tego nie widać w liczniku ram

    nie ma czegoś takiego jak licznik ram

    adresy tablic nie są odkładane

    -----------------------------------------

    za to argumenty funkcji, adresy powrotów z funkcji są odkładane na stosie

    gdy używasz gdzieś w kodzie nazwy tablicy - to kompilator zamiast nazwy posługuje się adresem tablicy w pamięci ram i nawet nic nie jest odkładane na stosie

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 kwi 2018, o 18:08 
    Offline
    Użytkownik

    Dołączył(a): 07 cze 2016
    Posty: 563
    Pomógł: 143

    Pewnie się znowu narażę :| ale chciałbym coś uściślić.

    Na stosie odkładane są adresy powrotów z podprocedury, zmienne lokalne używane wewnątrz funkcji, kopie rejestrów używanych przez funkcję.

    Argumenty funkcji natomiast lądują w rejestrach ogólnego przeznaczenia (nie na stosie), więc tym bardziej nie zajmują pamięci RAM, (chyba że ich łączny rozmiar przekroczy kilkanaście bajtów, co zdarza się raczej rzadko). W każdym razie jeśli funkcja ma jako jedyny argument wskaźnik, przed wywołaniem funkcji argument ten zostanie umieszczony w rejestrach (konkretnie w rejestrach r25:r24). Tak czy inaczej można przyjąć, że (w zdecydowanej większości) argumenty przekazywane do funkcji nie zajmują pamięci RAM (nawet na stosie).

    Wskaźnik oczywiście będzie zajmował pamięć RAM wtedy, kiedy zdefiniujesz zmienną zawierającą wskaźnik (pod warunkiem, że kompilator tej zmiennej nie zoptymalizuje), np.:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 kwi 2018, o 19:48 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 26 maja 2017
    Posty: 143
    Pomógł: 0

    Cytuj:
    " zdefiniowaleś w programie tablicę o rozmiarze 150 bajtów, a twój
    mikrokontroler ma tylko 256 bajtów pamięci RAM. Gdyby więc sposób przekazywania
    tablic jako argumentów funkcji działał tak jak poprzednio, to na stosie musiałaby zostać
    utworzona jej kopia także o rozmiarze 150 bajtów! Sam rozumiesz, że nie starczyłoby
    nawet całej pamięci RAM w tym mikrokontrolerze na kopię, nie mówiąc już o miejscu
    na stos i inne zmienne globalne"


    Andrews trochę mi namieszałeś,
    kolejne pytanie bo w BB str149 3.7.2( fragment u góry) tablica jest przekazywana cała do funkcji podczas gdy nie da się przekazać całej , tylko jej pojedyncze elementy a nie całą jako kopia , jak więc na przekazanie tablicy 150 bajtowej potrzebne jest 150 bajtów w pamięci RAM , chyba że zdefiniuje się tablice lokalnie w funkcji wtedy całość powędruje na stos , wytłumaczcie mi to proszę.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 2 kwi 2018, o 22:15 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27378
    Lokalizacja: Szczecin
    Pomógł: 1043

    andrews napisał(a):
    Pewnie się znowu narażę


    czym ? ;)

    andrews napisał(a):
    Argumenty funkcji natomiast lądują w rejestrach ogólnego przeznaczenia (nie na stosie), więc tym bardziej nie zajmują pamięci RAM, (chyba że ich łączny rozmiar przekroczy kilkanaście bajtów, co zdarza się raczej rzadko).

    a więc jednak czasem w RAM ;) ... troszkę się uśmiecham ale nie zaczepnie - tylko po to żeby kolega też i mnie zrozumiał ... bo czasem gdy widać, że ktoś jest mocno początkujący to nie jest grzechem wyjaśnić coś w uproszczeniu pewnym - bo co to za różnica dla kolegi procek87 ? ;) czy ten argument leci przez stos czy przez rejestry ? ;)

    Osoba która dopiero uczy się programować w C a nie zna jeszcze ni w ząb asemblera - łatwiej na początku przyjmie i zrozumie czym jest stos i jak działa ... jak zachowuje się funkcja ...

    Niż gdy będzie się zaczynało wchodzić aż w takie szczegóły co leci przez stos a co przez rejestry ? Zresztą efekt widać

    procek87 napisał(a):
    Andrews trochę mi namieszałeś,


    ... ale oczywiście szczegółowe wyjaśnienie - JAK NAJBARDZIEJ ok - więc czym tu się narażać ... Tylko podpowiedz chociaż koledze procek87 żeby najpierw chociaż odrobinkę poczytał o asemblerze ... ja ze swojej strony polecam książkę:

    Obrazek

    bo jak inaczej można zrozumieć co to są te całe rejestry ? - zanim się o tym wcześniej człowiek nie dowie w aspekcie asemblera właśnie ;) .... Przy okazji zaznaczam, że wcale nie muszę mieć racji - że to jak ja to przekazywałem musi być najlepszą metodą dydaktyczną ...

    ------------------------ [ Dodano po: 9 minutach ]

    procek87 napisał(a):
    kolejne pytanie bo w BB str149 3.7.2( fragment u góry) tablica jest przekazywana cała do funkcji podczas gdy nie da się przekazać całej , tylko jej pojedyncze elementy a nie całą jako kopia , jak więc na przekazanie tablicy 150 bajtowej potrzebne jest 150 bajtów w pamięci RAM

    Panie panie proszę cię - jeśli już powołujesz się na książkę - to przynajmniej ZACYTUJ fragment a nie pisz takich bzdur okropnych ... gdzie masz na tej stronie i w tym rozdziale napisane, że tablica jest przekazywana cała do funkcji ??? ... no bzdety jakieś wypisujesz a później ktoś kto nie ma tej książki w ręku - napisze dalej w tej książce ktoś bzdury napisał ... masakra jakaś

    Obrazek

    krótko mówiąc w książce piszę w tym rozdziale o przekazywaniu tablicy przez wskaźnik bo nie dałoby rady przekazać całej tablicy przez wartość - a ty piszesz albo wymyślasz sobie, że napisane zostało coś całkowicie odwrotnego

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 kwi 2018, o 18:36 
    Offline
    Użytkownik

    Dołączył(a): 07 cze 2016
    Posty: 563
    Pomógł: 143

    mirekk36 napisał(a):
    Zresztą efekt widać
    procek87 napisał(a):
    Andrews trochę mi namieszałeś,

    OK, to prawdopodobnie był efekt mojego nieodpowiedniego (zbyt szczegółowego dla początkującego) wytłumaczenia tematu...
    ...ale przepraszam (tak bez urazy ;)), czego efektem jest to, co nastąpiło zaraz potem ;):
    procek87 napisał(a):
    kolejne pytanie bo w BB str149 3.7.2( fragment u góry) tablica jest przekazywana cała do funkcji
    :?:

    Ja myślę, że to nie jest tylko kwestia sposobu tłumaczenia, ale przede wszystkim tego, że niektórzy próbują iść na skróty zadając zbyt zaawansowane pytania, nie znając dobrze podstaw potrzebnych do zrozumienia odpowiedzi. Przez to odpowiedzi na ich pytania muszą być bardzo obszerne (zbyt obszerne, jak na forum), lub rodzą następne pytania, lub ostatecznie muszą bazować na (czasami daleko idących) uproszczeniach, które to z kolei mogą wprowadzać w błąd innych użytkowników czytających to forum, posiadających nieco wyższy poziom wiedzy (dlatego zawsze mam mieszane uczucia, kiedy muszę posłużyć się uproszczeniami, aby przez niektórych nie zostały zrozumiane błędnie).

    W kwestii znajomości języka assemblera, jego znajomość jest nierozerwalnie związana ze znajomością podstaw budowy i zasady działania mikrokontrolerów, więc myślę, że od tego najlepiej zacząć. To znacząco ułatwia zrozumienie wielu tematów związanych z programowaniem w językach wyższego poziomu, więc zdecydowanie polecam. Myślę nawet, że o ile programując na PC można pominąć wgłębianie się w szczegóły sprzętowe komputera (załatwia to za nas system operacyjny przy użyciu różnego rodzaju sterowników), o tyle programowanie na systemy wbudowane wymaga jednak dość dobrej znajomości sprzętu, bo bez tego napisanie wydajnej, zaawansowanej aplikacji jest bardzo trudne (może nawet niemożliwe).

    @procek87 - nie potraktuj mojej wypowiedzi jako złośliwości. Rozumiem to dobrze, że każdy najpierw nie wie, zanim się dowie, czyli każdy przez ten etap nauki musi przejść. Napisałem to co napisałem, bo sam kiedyś byłem podobnie zbyt niecierpliwy i chciałem zacząć od napisania kodu, którego Linus Torvalds by się nie powstydził, ale życie szybko to zweryfikowało. Teraz wiem z doświadczenia, że należy się uczyć cierpliwie od podstaw, systematycznie i w odpowiedniej kolejności. Próba pominięcia niewygodnych i niezrozumiałych tematów mści się później niemożnością zrozumienia następnych. Nie czytałem wprawdzie książki Mirka, jednak jestem przekonany, że zachował w niej odpowiednią kolejność i stopniowanie zaawansowania tematów, więc ucz się po kolei, nie pomijaj niczego i nie odkładaj na później, a dojdziesz do celu (może nie tak szybko, jak byś tego oczekiwał, ale szybciej, niż w przypadku chaotycznej nauki).

    Przepraszam za off-topic (w razie czego admin może wyciąć).
    Od teraz już przestaję się wtrącać.
    Pozdrawiam
       Andrzej



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 kwi 2018, o 20:21 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27378
    Lokalizacja: Szczecin
    Pomógł: 1043

    andrews napisał(a):
    Przepraszam za off-topic (w razie czego admin może wyciąć).

    wyciąć ? ;) no to teraz kolega popłynął ;) ... tak cennych podpowiedzi się nie wycina - no chyba, że ich autor tego zażąda .. w końcu gdy jednak początkujący pytający zacznie się uczyć tego asemblera i to gdy wróci do tego wątku - wtedy przyda się jak znalazł ! ;)

    andrews napisał(a):
    Od teraz już przestaję się wtrącać.

    szkoda - ja osobiście liczę na takie "wtrącanie się" ... bo już nie raz dostałem info - że gdy dwie osoby może i nawet czasem się spierają ale jest to kulturalna wymiana zdań i poglądów - to inni - nawet postronni obserwatorzy takiej dyskusji wyciągają często wiele fajnych "kąsków" dla siebie ;)

    Ja mam nadzieję, że kolegi nie uraziłem swoją wypowiedzią - a przecież ją nawet uzupełniłem podając przy okazji jakąś dostępną literaturę z asemblerkiem ;) bo jest DOKŁADNIE jak piszesz:

    andrews napisał(a):
    W kwestii znajomości języka assemblera, jego znajomość jest nierozerwalnie związana ze znajomością podstaw budowy i zasady działania mikrokontrolerów, więc myślę, że od tego najlepiej zacząć. To znacząco ułatwia zrozumienie wielu tematów związanych z programowaniem w językach wyższego poziomu, więc zdecydowanie polecam.

    Ja na przykład podpisuję się pod tym rękami i nogami i sam zawsze staram się tak robić ... i nie chodzi już o to aby zostać najpierw super asemblerowcem - ale żeby chociaż go liznąć, żeby rozumieć podstawy działania, podstawy komend itp ... bo to przydaje się znakomicie w C - jeśli chodzi o takie coraz głębsze pytania.

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 kwi 2018, o 20:35 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 26 maja 2017
    Posty: 143
    Pomógł: 0

    andrews napisał(a):
    @procek87 - nie potraktuj mojej wypowiedzi jako złośliwości.


    nie traktuje twoich ani nikogo wypowiedzi jako złośliwych po prostu czytam i pytam miejcie wyrozumiałości dla mnie za jakiś czas pewnie znowu czegoś nie zrozumiem i znowu będę pytał może w tym temacie może w innym , nie jestem taki inteligenty jak wy ;) ale staram się ogarnąć to.

    Pytanie kolejne do książki ,ja ten fragment zrozumiałem w ten sposób poprzez wartość przekazywane są wszystkie elementy tablicy a nie tylko jeden wybrany element no bo jak można przekazać całą tablice i wszystkie jej elementy do funkcji naraz . Rozumiecie tablica ma 8 elementów uint8_t tab[]={1,2,3,4,5,6,7,8} jedno-bajtowych co daje 8 bajtów przekazuje się całą tablice 8 bajtów czy tylko jeden wybrany element .

    Obrazek


    Zapytam jakie znacie dobre książki ,które dadzą mi początkującemu coś w zrozumieniu podstaw asemblera, oprócz tej wyżej ?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 kwi 2018, o 21:19 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27378
    Lokalizacja: Szczecin
    Pomógł: 1043

    procek87 napisał(a):
    ja ten fragment zrozumiałem w ten sposób poprzez wartość przekazywane są wszystkie elementy tablicy a nie tylko jeden wybrany element no bo jak można przekazać całą tablice i wszystkie jej elementy do funkcji naraz . Rozumiecie tablica ma 8 elementów uint8_t tab[]={1,2,3,4,5,6,7,8} jedno-bajtowych co daje 8 bajtów przekazuje się całą tablice 8 bajtów czy tylko jeden wybrany element .

    No to chyba (nie obraź się proszę) ale masz problemy z językiem polskim niestety.

    W zaznaczonym przez ciebie na czerwono fragmencie masz po pierwsze zdanie złożone, gdzie jego pierwsza część do przecinka to pytanie - a nie stwierdzenie, zaś druga część po przecinku jest uzasadnieniem z wykrzyknikiem, że gdyby miało dojść do takiej sytuacji ... to musiałoby (tryb przypuszczający) ... zostać utworzone coś - co już zajęłoby prawie całą pamięć ;) bo aż 150 bajtów z 256 dostępnych !!!!

    Łatwo sobie wyobrazić co by było gdybyś chciał w ten sposób przekazać tablicę liczącą sobie np 300 elementów - to zabrakłoby pamięci..

    zresztą następne zdanie po tym zaznaczonym na czerwono DOBITNIE mówi hmm ok sugeruje - że sam rozumiesz :D że nie starczyłoby pamięci za chwilę w mikrokontrolerze , nie mówiąc o potrzebie RAMu na stos i inne zmienne globalne.

    A TY QURCZĘ piszesz, że zrozumiałeś to odwrotnie tak ? ;) Że ja napisałem, że tablice przekazuje się przez wartość ? ;) no to jesteś pierwszym czytelnikiem który tego dokonał.

    -------------------------------------------------

    wiesz co ? kolega andrews ma 100% racji - zacznij ty od asemblera ok?

    ------------------------ [ Dodano po: 1 minucie ]

    procek87 napisał(a):
    Zapytam jakie znacie dobre książki ,które dadzą mi początkującemu coś w zrozumieniu podstaw asemblera, oprócz tej wyżej ?

    Bo ta wg ciebie jest zła tak ? ;) ... dobry jesteś ... na prawdę dobry

    sorki ale ja się wyłączam z wątku i nie myśl, że to twoja wina ;) ja mam sporo pokory ... zatem to moja wina - bo to ja nie jestem w stanie do ciebie dotrzeć ... więc może innym się uda - moja dydaktyka nie jest jednak najlepsza ;)

    ------------------------ [ Dodano po: 6 minutach ]

    no chyba że dalej będziesz pisał tzn przeinaczał zdania z mojej książki - to oczywiście będę wtedy reagował ;)

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 6 kwi 2018, o 08:48 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 26 maja 2017
    Posty: 143
    Pomógł: 0

    procek87 napisał(a):
    Zapytam jakie znacie dobre książki ,które dadzą mi początkującemu coś w zrozumieniu podstaw asemblera, oprócz tej wyżej ?


    Pisząc te zdanie miałem na myśli łącznie z tą książką jakie znacie jeszcze inne .

    Co do twojego odniesienia do mojego postu może masz rację co do tego w jaki sposób pytam , bo pytam bo jestem początkujący ,
    bo nie będę nikomu tyłka za przeproszeniem lizał po prostu czytając zrozumiałem inaczej bo może wy to co jest napisane w tych kilku zdaniach odbieracie inaczej to ja nie i mogę o tym chociaż na forum wsparcia pogadać sorry za to że jestem początkujący ale mimo to nie rzucę tego w cholerę i będę próbował.
    Pozdrawiam



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 20 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


    Nie możesz rozpoczynać nowych wątków
    Nie możesz odpowiadać w wątkach
    Nie możesz edytować swoich postów
    Nie możesz usuwać swoich postów
    Nie możesz dodawać załączników

    Szukaj:
    Skocz do:  
    cron
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO