-
221. Data: 2022-07-19 22:05:42
Temat: Re: Rynek pracy STM32
Od: heby <h...@p...onet.pl>
On 19/07/2022 21:20, Janusz wrote:
> Mylisz się, używa się jako informację żeby kompilator nie optymalizował
> tej zmiennej
Jesli kompilator wyoptymzliował Ci tą zmienną, a nie powinien, to masz
buga w kodzie, który załatałeś nieprawidłowym volatile.
Nie masz pojęcia o programowaniu.
-
222. Data: 2022-07-19 22:07:23
Temat: Re: Rynek pracy STM32
Od: heby <h...@p...onet.pl>
On 19/07/2022 21:25, Janusz wrote:
>> Jak by powiedział, to od razu by się obrazili, jak Janusz.
> Możesz się odstosunkować ode mnie?
Nie mogę. Łżesz z powodu ignoracji. Jesli ktoś to robi, to nie można
pozostać bezczynnym, nalezy rozgniatać w miejscu.
-
223. Data: 2022-07-19 22:08:26
Temat: Re: Rynek pracy STM32
Od: Dawid Rutkowski <d...@w...pl>
wtorek, 19 lipca 2022 o 20:01:37 UTC+2 heby napisał(a):
> On 19/07/2022 18:35, Janusz wrote:
> > Ale na avr-ze to nie pójdzie bo ten procek nie wykonuje programu z ram-u
> > (architektura Harvard) więc żadnej kopi nie uruchomi.
> Tutaj masz dwa przykłady napisne przed chwilą na kolanie:
>
> Polimorfizm statyczny:
> https://pastebin.com/wDavM1vq
>
> A tu dynamiczny:
> https://pastebin.com/dFjzVsCn
>
> Oba migają diodą jak szalone, na moim Harvardowym Arduino z biednym
> AVRkiem. Co mogę mieć źle, że mam dobrze?
Ciekawe jakie różnice w skompilowanym kodzie.
AVR ma rozkaz call register?
-
224. Data: 2022-07-19 22:09:49
Temat: Re: Rynek pracy STM32
Od: heby <h...@p...onet.pl>
On 19/07/2022 21:32, Janusz wrote:
> Przecież to samo mogę napisać w komentarzu i skopiować na początek pliku
I kto gwarantuje że to co napisano w komentarzu ma jakiekolwiek
powiązanie z tym co znajdzie w reszcie pliku?
-
225. Data: 2022-07-19 22:15:22
Temat: Re: Rynek pracy STM32
Od: heby <h...@p...onet.pl>
On 19/07/2022 22:08, Dawid Rutkowski wrote:
> Ciekawe jakie różnice w skompilowanym kodzie.
Nie ma sensu porównywać. Statyczny polimorfizm ma większe szanse za
zerowe obciązenie, dynamiczny prawie na pewno będzie fizycznie wołał
metody wirtualne. Ale sprawdzę, jak znajdę chwię, w środowisku Arduino
jeszcze nie robiłem objdumpa.
> AVR ma rozkaz call register?
ijmp i icall?
http://ww1.microchip.com/downloads/en/devicedoc/atme
l-0856-avr-instruction-set-manual.pdf
-
226. Data: 2022-07-19 22:15:31
Temat: Re: Rynek pracy STM32
Od: "Grzegorz Niemirowski" <g...@g...net>
heby <h...@p...onet.pl> napisał(a):
> Jesli kompilator wyoptymzliował Ci tą zmienną, a nie powinien, to masz
> buga w kodzie, który załatałeś nieprawidłowym volatile.
Co to znaczy, że nie powinien? Jakie to jest nieprawidłowe volatile? Janusz
podał 3 poprawne przykłady użycia volatile.
--
Grzegorz Niemirowski
https://www.grzegorz.net/
-
227. Data: 2022-07-19 22:37:26
Temat: Re: Rynek pracy STM32
Od: heby <h...@p...onet.pl>
On 19/07/2022 22:15, Grzegorz Niemirowski wrote:
>> Jesli kompilator wyoptymzliował Ci tą zmienną, a nie powinien, to masz
>> buga w kodzie, który załatałeś nieprawidłowym volatile.
> Co to znaczy, że nie powinien?
Janusz Twierdzi, że kompilator zredukował mu kod do zera, który robił
coś z jakąs zmienną.
Odrzucając hipoteze o bugu w kompilatorze:
Jedynym powodem, że jakiś kod korzystajacy ze zmiennej został
wyoptymalizowana do zera, to że kompilator w kodzie nie zakładał zmian
tej zmiennej w zewnątrznych funkcjach, lub mógł je wyliczyć statycznie
widąc cały kod.
Skoro tak, to miał prawo zoptymalizować ten kod do zera.
Janusz narzeka że tak sie stało.
Wnioskuje więc że:
1) to nie była zmienna a register - tutaj nalezy użyć volatile
2) to była zmienna modyfikowana w innym wątku albo przerwaniu - wtedy
volatile można uzyć tylko, jesli procesor nie wspiera barier. Nawet
mikrokontrolerowe ARMy miewają bariery.
https://developer.arm.com/documentation/den0024/a/Th
e-A64-instruction-set/Memory-access-instructions/Mem
ory-barrier-and-fence-instructions
> Jakie to jest nieprawidłowe volatile?
Użyte w sytuacji, kiedy tak naprawdę chcesz barierę. Bariera mówi
kompilatorowo: uwaga, ta zmienna może zostać zmodyfikowana przez inny,
nieznany czynnik, w tym miejscu nie wolno jej przechować ani zakładać że
ma jakaś starą wartość po przejściu bariery.
> Janusz podał 3 poprawne przykłady użycia volatile.
Zaznaczenie "volatile" na zmiennej powoduje, że kompialator wyłączy
cacheowanie jej wartości, co uniemożliwi optymalizację kodu.
Tymczasem prawie na pewno w algorytmie jest bug, albo wcale nie chodziło
o wyłaczenie optymalizacji, tylko o poinformowanie kompilatora, że
zmienna może być zmodyfikowana poza tym kodem. Od tego są bariery.
Dla procesorów posiadajacychc cache, baeriery są *JEDYNYM* sposobem
zapewnienia synchronizacji stanu zmiennych między watkami. Na niektórych
złośliwych architekturach możliwe jest, że mimo volatile, zmiana
zmiennej w wątku A nigdy nie będzie widoczna w wątku B bez użycia
bariery. Na innych może się zdażyć, że zapis z jednego watku w
kolejności A a potem B, bedzie widziany w innym wątku jako zapis B a
potem A. Tutaj znowu, volatile nic nie pomoże - od tego są bariery.
Ponieważ Janusz nie przedstawił spornego kawałka kodu - nie wiadomo
dlaczego kompilator usunął mu ten kod. Wiec można sobie na sucho
pogdybać w jakich okolicznościach może i dlaczego volatile nie jest od
tego, do czego go źle używają prawie wszyscy.
https://en.wikipedia.org/wiki/Memory_barrier
[...] The keyword volatile does not guarantee a memory barrier to
enforce cache-consistency. Therefore, the use of volatile alone is not
sufficient to use a variable for inter-thread communication on all
systems and processors.[...]
PS. To nie aby ja podałem 3 przykłady, w tym dwa błedne ;) ?
-
228. Data: 2022-07-19 22:47:02
Temat: Re: Rynek pracy STM32
Od: Janusz <j...@o...pl>
W dniu 2022-07-19 o 21:47, Grzegorz Niemirowski pisze:
> Janusz <j...@o...pl> napisał(a):
>> Przecież to samo mogę napisać w komentarzu i skopiować na początek
>> pliku gdzie opisuję wszystkie zmiany albo mieć osobnym pliku opisowym
>> bez całych ceregieli z SVN-em.
>
> To nie jest to samo.
Się domyślam, w zastosowaniach jednoosobowych mi wystarczy.
W systemie kontroli wersji masz opis do zmiany
> (commita) obejmującej różne linie w różnych plikach. Widzisz, że w
> zmianie z dnia tego i tego, o komentarzu takim a takim, w pliku a.c
> wstawiłeś te linijki a te zmodyfikowałeś, a w pliku b.c takie linijki
> skasowałeś. Każda lininijka kodu ma opis (powiązanie ze zmianą, która
> jej dotknęła). Opisy w treści pliku nijak tego nie zapewniają. Nie
> mówiąc już o historii linii, w tym tych usuniętych.
Całe szczęście nie jestem zawodowym programistą chociaż kilka zawodowych
programów popełniłem ale było to w czasach Clipera i nikt wtedy o
svn-ach nie słyszał.
Teraz piszę w zasadzie dla siebie.
Piszesz jakbyś nigdy
> nie używał systemu kontroli wersji.
Próbowałem ale sie poddałem, zbyt pokopane żeby tracić na to czas,
myślałem że jest to bardziej intuicyjne.
> https://docs.github.com/assets/cb-135736/images/help
/repository/git_blame.png
Nic mi ten obrazek nie mówi, może poza lewym panelem gdzie są jak
przypuszczam wymienieni ci którzy coś grzebali w kodzie.
--
Janusz
-
229. Data: 2022-07-19 22:47:35
Temat: Re: Rynek pracy STM32
Od: Janusz <j...@o...pl>
W dniu 2022-07-19 o 22:09, heby pisze:
> On 19/07/2022 21:32, Janusz wrote:
>> Przecież to samo mogę napisać w komentarzu i skopiować na początek pliku
>
> I kto gwarantuje że to co napisano w komentarzu ma jakiekolwiek
> powiązanie z tym co znajdzie w reszcie pliku?
Ja, bo to dla siebie robię.
--
Janusz
-
230. Data: 2022-07-19 22:48:36
Temat: Re: Rynek pracy STM32
Od: Janusz <j...@o...pl>
W dniu 2022-07-19 o 22:07, heby pisze:
> On 19/07/2022 21:25, Janusz wrote:
>>> Jak by powiedział, to od razu by się obrazili, jak Janusz.
>> Możesz się odstosunkować ode mnie?
>
> Nie mogę. Łżesz z powodu ignoracji. Jesli ktoś to robi, to nie można
> pozostać bezczynnym, nalezy rozgniatać w miejscu.
Możesz mnie wiesz gdzie pocałować.
--
Janusz