Goto page Previous 1, 2, 3, ... 10, 11, 12 Next
Dawid Rutkowski
Guest
Thu May 18, 2023 2:13 pm
czwartek, 18 maja 2023 o 14:01:30 UTC+2 Marek napisał(a):
Quote:
On Thu, 18 May 2023 04:08:13 -0700 (PDT), Dawid Rutkowski
drut...@wp.pl> wrote:
To nie turbo pascal tylko C na uC - i tak się dziwię, że OP
pisze tu o jakichś wyjątkach, może to w wersji mips pod jaki
mś unixem.
Błagam, przecież pic32 to pełen mips dlaczego nie ma mieć wyjątków??
Ma nawet wsparcie częściowe do VM user/kernel space. A MZy nawet
TBLe do translacji adresów wirtualnych. Na ATmega8 świat się nie
kończy...
O, nawet się nie zainteresowałem, że pic32 to mips - sądziłem, że się bardziej wysilili.
Wszystko kwestia kosztu, w tym ilości RAMu - 386 było już w 1986,
ja miałem już w 1933, a Linux Torvalds, dla zbawienia ludzkości, na szczęście już w 1990 (chyba).
No ale żeby się nie kopać po kostkach, to i na 386 można sobie puszczać jeden program (tak narodził
się Linux - Linusowi nie podobał się emulator terminal w minixie, więc napisał własny,
działający na "gołym" 386 - ale 32-bitowym), i pewnie na pic32 też - ale żeby były
wyjątki obsługiwane, to coś tam jeszcze trzeba albo dokompilować - w stylu eCosa,
czyli jednozadaniowego, wielowątkowego systemu operacyjnego - lub coś po prostu
puszczać, w stylu Linuxa czy innego OSa.
Więc co tam jeszcze masz?
Czy wszystko, łącznie z obsługą wyjątków, jest w tych 75k linii kodu? Bo można i tak,
choć ciekawi, jak te wyjątki obsługujesz.
Dawid Rutkowski
Guest
Thu May 18, 2023 2:14 pm
czwartek, 18 maja 2023 o 13:54:05 UTC+2 Grzegorz Niemirowski napisał(a):
Quote:
heby <he...@poczta.onet.pl> napisał(a):
Słusznie. Pozwólcie, że wsadzę kij w mrowisko i pokażę co należy używać od
kilku lat:
https://en.cppreference.com/w/cpp/iterator/size
A bodaj od 20 lat jest w boost.
Ale to trzeba zacząć C++ używać
Zaraz usłyszysz, że "jest za darmo" ;>
heby
Guest
Thu May 18, 2023 2:37 pm
On 18/05/2023 13:54, Grzegorz Niemirowski wrote:
Quote:
https://en.cppreference.com/w/cpp/iterator/size
A bodaj od 20 lat jest w boost.
Ale to trzeba zacząć C++ używać
Tak. Trzeba zmienić 2 litery w nazwie kompilatora na dwa +.
Dawid Rutkowski
Guest
Thu May 18, 2023 2:59 pm
czwartek, 18 maja 2023 o 14:39:29 UTC+2 heby napisał(a):
Quote:
I to wystarczy, żeby sizeof zaczął oznaczać liczbę elementów tablicy?
Analogicznie do dowodu nie wprost:
"Jedna rana stanowczo śmiertelna, ale pozostałe dadzą się wyleczyć!"
Marek
Guest
Thu May 18, 2023 3:04 pm
On Thu, 18 May 2023 05:13:49 -0700 (PDT), Dawid Rutkowski
<drutkow1@wp.pl> wrote:
Quote:
t w tych 75k linii kodu? Bo można i tak,
choć ciekawi, jak te wyjątki obsługujesz.
Wyjątki obsługuje funkcja przypisana do exception handler, ją już
wywołuje core procesorami. Jest kilka wyjątków:
static enum {
EXCEP_IRQ = 0, // interrupt
EXCEP_AdEL = 4, // address error exception (load or
ifetch)
EXCEP_AdES, // address error exception (store)
EXCEP_IBE, // bus error (ifetch)
EXCEP_DBE, // bus error (load/store)
EXCEP_Sys, // syscall
EXCEP_Bp, // breakpoint
EXCEP_RI, // reserved instruction
EXCEP_CpU, // coprocessor unusable
EXCEP_Overflow, // arithmetic overflow
EXCEP_Trap, // trap (possible divide by zero)
EXCEP_IS1 = 16, // implementation specfic 1
EXCEP_CEU, // CorExtend Unuseable
EXCEP_C2E // coprocessor 2
} _excep_code;
Oczywiście można po wyjątku wyjść z handlera i działać dalej ale w
moim przypadku handler zapamiętuje co i gdzie się wydarzyło i
zatrzymuje kod aż watchdog zresetuje procesor.
Kiedyś na MZ zrobiłem małego OSa z ochroną pamięci, obsługą pamięci
wirtualnej i TBLami, ładowaniem procesów itp... Skończyło się tylko
na tym, że jeden proces wypisywał AAA a drugi BBB na konsoli
(zbieżność z początkiem innego OSa przypadkowa).
Zresztą na MZ można uruchomić pełnego Linuxa więc....
--
Marek
heby
Guest
Thu May 18, 2023 3:06 pm
On 18/05/2023 14:59, Dawid Rutkowski wrote:
Quote:
https://en.cppreference.com/w/cpp/iterator/size
A bodaj od 20 lat jest w boost.
Ale to trzeba zacząć C++ używać
Tak. Trzeba zmienić 2 litery w nazwie kompilatora na dwa +.
I to wystarczy, żeby sizeof zaczął oznaczać liczbę elementów tablicy?
To wystarczy aby "trzeba zacząć C++ używać".
W przypadku oznaczania tablicy przez std::size, należy się jeszcze
upewnić, że kompilator i bibliteki są zgodne, bodaj, z C++17, lub, że ma
się 20 letni kompilator wspierany przez 20 letni boost, jeśli z jakiegoś
powodu ma się 20 letni kompilator.
Quote:
Analogicznie do dowodu nie wprost:
"Jedna rana stanowczo śmiertelna, ale pozostałe dadzą się wyleczyć!"
W sensie że zamiana dwóch literek na dwa + to śmiertelna rana? Jeśli to
coś popsuje, to i tak miałeś popusty kod wcześniej. Zwyczajowo nic nie
popsuje.
A mówią, że nie ma darmowych obiadów.
Grzegorz Niemirowski
Guest
Thu May 18, 2023 3:17 pm
heby <heby@poczta.onet.pl> napisał(a):
Quote:
Tak. Trzeba zmienić 2 litery w nazwie kompilatora na dwa +.
I od tego Marek zostanie programistą C++?
--
Grzegorz Niemirowski
https://www.grzegorz.net/
heby
Guest
Thu May 18, 2023 3:18 pm
On 18/05/2023 15:17, Grzegorz Niemirowski wrote:
Quote:
Tak. Trzeba zmienić 2 litery w nazwie kompilatora na dwa +.
I od tego Marek zostanie programistą C++?
Nie. Zapewne dlatego wyciałeś cycta wyżej. Od tego może "zacząć C++ używać".
Grzegorz Niemirowski
Guest
Thu May 18, 2023 3:28 pm
heby <heby@poczta.onet.pl> napisał(a):
Quote:
Nie. Zapewne dlatego wyciałeś cycta wyżej. Od tego może "zacząć C++
używać".
Wyciąłem, bo pisząc o zaczęciu nie miałem na myśli wykonania kroku, który
tak naprawdę nic nie zmienia. Język kodu nie zależy od nazwy kompilatora.
Ba, możesz nawet napisać kod i go nie skompilować. Oni tego nie sprawdzają

Podobnie czytając książkę o programowaniu rozpoznasz język bez używania
żadnego narzędzia. Kolega KS zacznie używać C++ gdy zacznie używać jego
mechanizmy i porzuci nawyki z C.
--
Grzegorz Niemirowski
https://www.grzegorz.net/
heby
Guest
Thu May 18, 2023 3:37 pm
On 18/05/2023 15:28, Grzegorz Niemirowski wrote:
Quote:
Nie. Zapewne dlatego wyciałeś cycta wyżej. Od tego może "zacząć C++
używać".
Wyciąłem, bo pisząc o zaczęciu nie miałem na myśli wykonania kroku,
który tak naprawdę nic nie zmienia.
Krok ten zmienia bardzo wiele. Nagle nie masz wymówki, że się nie da
pisać lepiej.
W momencie jak masz C++, zrobienie buga na sizeof jest dalej możliwe,
ale znacząco bardziej wstydliwe, a po kilku latach praktyki, praktycznie
trudne.
Trzymanie się tej meldy "ja od zawsze pisałem w C i nie mogę używać
std::size" jest tym mniej sensowne im bardziej rozumiesz jaki jest koszt
przejścia na C++. Zerowy, choć są koszta ideologiczne.
Quote:
Język kodu nie zależy od nazwy
kompilatora.
To częsciowo prawda, g++ i gcc tak naprawdę róznią się tylko detalami.
Quote:
Ba, możesz nawet napisać kod i go nie skompilować. Oni tego
nie sprawdzają

Podobnie czytając książkę o programowaniu rozpoznasz
język bez używania żadnego narzędzia.
Filozofujesz.
Prawda taka, że społecznośc programistów embedded zazwyczaj jest o mały
krok od zamiany kijka na siekierkę i to za friko. Ale z jakiejś
przyczyny nie chcą. I nikt, do dzisiaj, nie wyjaśnił mi jaki koszt
ponoszą zmieniajac 2 literki w nazwie kompialtora i dostając masę nowych
ficzerów.
Quote:
Kolega KS zacznie używać C++ gdy
zacznie używać jego mechanizmy i porzuci nawyki z C.
Nie. Mechniazmów C++ możesz używać dowolnych, w dowolnym momencie. Nikt
nie porzuca C, nie ma takiej potrzeby. W C++ jest masa ułatwień, któe
znakomicie przydadzą się w C bez potrzeby rezygnacji i dysonansu
ideologicznego. std::size to jedno z setek, użytecznych w embedded,
ułatwień, za darmo.
Grzegorz Niemirowski
Guest
Thu May 18, 2023 3:52 pm
heby <heby@poczta.onet.pl> napisał(a):
Quote:
Filozofujesz.
Ciekawe stwierdzenie jak na kogoś, kto daje poradę odnoszącą się do innego
języka niż używa pytający

A potem rozważasz jaka super jest zmiana gcc na
g++ w Makefile.
--
Grzegorz Niemirowski
https://www.grzegorz.net/
Dawid Rutkowski
Guest
Thu May 18, 2023 3:55 pm
czwartek, 18 maja 2023 o 15:04:31 UTC+2 Marek napisał(a):
Quote:
On Thu, 18 May 2023 05:13:49 -0700 (PDT), Dawid Rutkowski
drut...@wp.pl> wrote:
t w tych 75k linii kodu? Bo można i tak,
choć ciekawi, jak te wyjątki obsługujesz.
Wyjątki obsługuje funkcja przypisana do exception handler, ją już
wywołuje core procesorami. Jest kilka wyjątków:
static enum {
EXCEP_IRQ = 0, // interrupt
EXCEP_AdEL = 4, // address error exception (load or
ifetch)
EXCEP_AdES, // address error exception (store)
EXCEP_IBE, // bus error (ifetch)
EXCEP_DBE, // bus error (load/store)
EXCEP_Sys, // syscall
EXCEP_Bp, // breakpoint
EXCEP_RI, // reserved instruction
EXCEP_CpU, // coprocessor unusable
EXCEP_Overflow, // arithmetic overflow
EXCEP_Trap, // trap (possible divide by zero)
EXCEP_IS1 = 16, // implementation specfic 1
EXCEP_CEU, // CorExtend Unuseable
EXCEP_C2E // coprocessor 2
} _excep_code;
Oczywiście można po wyjątku wyjść z handlera i działać dalej ale w
moim przypadku handler zapamiętuje co i gdzie się wydarzyło i
zatrzymuje kod aż watchdog zresetuje procesor.
A, OK, dzięki, to całkiem fajne, choć w typowych zastosowaniach uC przydaje się tylko do debugowania
przekroczeń pamięci - ale to też się przyda.
Quote:
Kiedyś na MZ zrobiłem małego OSa z ochroną pamięci, obsługą pamięci
wirtualnej i TBLami, ładowaniem procesów itp... Skończyło się tylko
na tym, że jeden proces wypisywał AAA a drugi BBB na konsoli
(zbieżność z początkiem innego OSa przypadkowa).
Ja zrobiłem na ATmegę dwa wątki wywłaszczane (no bo procesy bez ochrony pamięci są bez sensu).
Ale nie mam pomysłu, do czego użyć tego w praktyce.
Quote:
Zresztą na MZ można uruchomić pełnego Linuxa więc....
Linux, przy całym swym bogactwie, ma jedną wadę - nie jest systemem czasu rzeczywistego.
A olbrzymia większość tego, co robiłem na uC, jest przynajmniej soft real-time.
I w sumie nic dziwnego - od nie-real-time mamy PC-ty z Linuxem.
Dawid Rutkowski
Guest
Thu May 18, 2023 3:58 pm
czwartek, 18 maja 2023 o 15:06:53 UTC+2 heby napisał(a):
Quote:
On 18/05/2023 14:59, Dawid Rutkowski wrote:
https://en.cppreference.com/w/cpp/iterator/size
A bodaj od 20 lat jest w boost.
Ale to trzeba zacząć C++ używać
Tak. Trzeba zmienić 2 litery w nazwie kompilatora na dwa +.
I to wystarczy, żeby sizeof zaczął oznaczać liczbę elementów tablicy?
To wystarczy aby "trzeba zacząć C++ używać".
Jako przycisku do papieru ;>
Quote:
W przypadku oznaczania tablicy przez std::size, należy się jeszcze
upewnić, że kompilator i bibliteki są zgodne, bodaj, z C++17, lub, że ma
się 20 letni kompilator wspierany przez 20 letni boost, jeśli z jakiegoś
powodu ma się 20 letni kompilator.
Mój zaraz będzie 17-letni. Prawie "stara dupa" ;>
Quote:
Analogicznie do dowodu nie wprost:
"Jedna rana stanowczo śmiertelna, ale pozostałe dadzą się wyleczyć!"
W sensie że zamiana dwóch literek na dwa + to śmiertelna rana? Jeśli to
coś popsuje, to i tak miałeś popusty kod wcześniej. Zwyczajowo nic nie
popsuje.
Nie, odwrotnie.
Zmienić dwie literki - proste, ale nie wystarczy.
Może wystarczą następne kroki - ale one są już o wiele, wiele trudniejsze.
Zaś "zwyczajowo" - to samo raczej nic nie poprawi. Popsuć może.
heby
Guest
Thu May 18, 2023 4:00 pm
On 18/05/2023 15:52, Grzegorz Niemirowski wrote:
Quote:
Filozofujesz.
Ciekawe stwierdzenie jak na kogoś, kto daje poradę odnoszącą się do
innego języka niż używa pytający
Pytający używa subsetu C++ o nazwie C, nie posiadający żadnych
widocznych zalet względem pełnego setu.
Istnieje bezpieczny i przeznaczony do takich zastosowań element języka
poza tym subsetem.
Przeniesięnie się z subsetu do przestrzeni gdzie istnieje to rozwiązanie
jest obarczone zerowym kosztem.
W przestrzeni tej istnieje też wiecej rozwiązań probemów, o których
jeszcze nie wiesz, że są problemami rozwiązanymi 20 lat temu.
Quote:
A potem rozważasz jaka super jest
zmiana gcc na g++ w Makefile.
Bo to, co zgrabnie wyciąłeś, okresla koszt "zacząć C++ używać". To nie
jest operacja zatrzymująca firmę na miesiąc. To operacja, której
wiekszosc programistów nawet nie zauważy. Dlatego wymówka "zacząć C++
używać" wymaga odpowiedzi, bo często podczas dysput z embedowcami
pojawia się jako heroiczny wysiłek i zwiększenie wsadu do flasha o
gigabajty w/g opini zasłyszanej od kolegi szwagra z sąsiedniej firmy.
heby
Guest
Thu May 18, 2023 4:01 pm
On 18/05/2023 15:58, Dawid Rutkowski wrote:
Quote:
Zmienić dwie literki - proste, ale nie wystarczy.
Może wystarczą następne kroki - ale one są już o wiele, wiele trudniejsze.
A co jeszcze musisz zmienić *zanim* zaczniesz używać std::size, poza "++"?
Możesz podać listę tych kroków?
Quote:
Zaś "zwyczajowo" - to samo raczej nic nie poprawi. Popsuć może.
A co może popsuć?
Goto page Previous 1, 2, 3, ... 10, 11, 12 Next