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



Teraz jest 6 lut 2025, o 14:48


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: 27354
Lokalizacja: Szczecin
Pomógł: 1042

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: 27354
Lokalizacja: Szczecin
Pomógł: 1042

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: 27354
Lokalizacja: Szczecin
Pomógł: 1042

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: 27354
Lokalizacja: Szczecin
Pomógł: 1042

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: 27354
Lokalizacja: Szczecin
Pomógł: 1042

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: 27354
Lokalizacja: Szczecin
Pomógł: 1042

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: 27354
Lokalizacja: Szczecin
Pomógł: 1042

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:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO