Skocz do zawartości

Pomocna odpowiedź

Napisano (edytowany)

Dzień Dobry,

Chciałbym nauczyć się podstaw assemblera. Mam tutaj na myśli strukturę języka (dyrektywy, sekcje programu itp.) - inaczej mówiąc, zagadnienia niezależne od architektury docelowej. Wiedzę chciałbym najbardziej wykorzystać przy pracowaniu z układami AVR i ARM. Korzystając z zasobów internetu trafiłem na wiele "tutoriali", jednak wszystkie z nich były wg mnie niedopracowane - wiele terminów było omawianych powierzchownie albo wcale, jakby autorzy z góry zakładali, że każdy te terminy zna. Tak więc, jeśli ktoś może zasugerować przystępną, w miarę aktualną lekturę, byłbym wdzięczny za jej link/tytuł.

Edytowano przez JammyCrazy

Obawiam się, że w przypadku asemblera bardzo mało będzie "zagadnień niezależnych od architektury docelowej". Jest nawet gorzej, bo dla jednej architektury różne narzędzia mogą używać innych formatów, czy też dyrektyw.

  • Lubię! 1
10 minut temu, Elvis napisał:

Obawiam się, że w przypadku asemblera bardzo mało będzie "zagadnień niezależnych od architektury docelowej".

No to rzeczywiście słabo. W takim razie zostają mi książki typowo pod AVR i ARM. 

Nauka asemblera ma jedną, niewątpliwą zaletę - pozwala zrozumieć jak faktycznie działa procesor. Co najważniejsze, jeśli się to raz zrozumie, nauczenie się innej architektury będzie o wiele łatwiejsze, a wiele jest praktycznie identycznych. Moim zdaniem najlepiej wybrać jedną architekturę, jedno narzędzie (asembler) i zacząć naukę. Jak kiedyś będzie potrzebne coś innego, trzeba będzie niestety sporo się douczyć.

  • Lubię! 2

Najgorzej jest zawsze z mapą rejestrów i instrukcji, jak masz te dwie rzeczy i programator to sobie poradzisz 😉 

W przypadku nowszych wymysłów jak ARM jeszcze podstawowe przerwania powinny być przypisane.  Spróbuj zacząć od Low-Level C na wskaźnikach, potem możesz przejść do ASM. Tak będzie dużo prościej.

To pozwoli Ci zrozumieć jak uruchomić mikrokontroler (w szczególności ARM) na niskim poziomie, reszta to obsługa rejestrów i przerwań. Potem wystarczy, że przepiszesz to samo na ASM, z tym, że C kompiluje się do ASM, więc możesz w każdej chwili podejrzeć kod (polecam wyłączyć optymalizację).

Chyba, że masz jakieś starsze MCU pod ręką, to możesz wpaść też tutaj:

Wersja w dużym uproszczeniu 😄 

  • Lubię! 1
1 godzinę temu, H1M4W4R1 napisał:

Spróbuj zacząć od Low-Level C na wskaźnikach, potem możesz przejść do ASM.

Tutaj idealna książka do tego dla AVR:

https://lubimyczytac.pl/ksiazka/189148/jezyk-c-dla-mikrokontrolerow-avr-od-podstaw-do-zaawansowanych-aplikacji

Są np dyrektywy kompilatora, aby pominąć odkładanie rejestrów na stos, podczas wywoływania funkcji przerwania oraz inne tego typu szczegóły. Jak ktoś może polecić dla ARM jestem zainteresowany. 

  • Lubię! 1

Moim zdaniem lepiej zabrać się za naukę asemblera dla ARM. Układy AVR są już bardzo wiekowe, poza tym 8-bitów wcale nie ułatwia życia. Natomiast ARM Cortex-M3/M4 są całkiem przyjemne i w sumie proste do nauki.

12 minut temu, Elvis napisał:

Moim zdaniem lepiej zabrać się za naukę asemblera dla ARM. Układy AVR są już bardzo wiekowe, poza tym 8-bitów wcale nie ułatwia życia. Natomiast ARM Cortex-M3/M4 są całkiem przyjemne i w sumie proste do nauki.

Ja się zgadzam. @Elvismasz jakąś książkę którą polecasz? 

Świetne wiadomości. C mam w małym palcu, a praca ze wskaźnikami to dla mnie żaden problem. Tylko jaką płytkę ARM wybrać... PI Pico będzie ok? Podobno ciężko się go programuje na Windowsie, a na naukę Linuxa nie mam czasu i chęci.

46 minut temu, Elvis napisał:

"PM0214 Programming manual" - do pobrania ze strony ST, jakoś nie mogę wkleić linka, ale google znajdzie bez problemu

Przejrzałem i co mogę powiedzieć: dobry manual nie jest zły. Dzięki za propozycję @Elvis. Gdyby ktoś jednak miał propozycję książki też chętnie skorzystam. 

A czemu nie asembler Virtualnej Maszyny Java Androida, apki można sobie edytować 😄 Z zerowym pojęciem, bez niczego, dodałem sobie przycisk do obrotu ekranu w czytaku pdf od Googla, ale nie powiem, dwa dni trwało.

15 minut temu, JammyCrazy napisał:

Tylko jaką płytkę ARM wybrać... PI Pico będzie ok?

Pico ma rdzeń Cortex-M0+, na początek radziłbym Cortex-M3 lub Cortex-M4, jest łatwiej zacząć.

  • Lubię! 1

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...