Nauka programowania w asemblerze - przydatne zasoby [zamknięte]
10
Kontynuując poprzedni wątek, zainteresowałem się trochę nauczeniem programowania w asemblerze. Nie tyle dlatego, że chcesz zaprogramować przydatne aplikacje, ale po prostu poznaj programowanie na niskim poziomie, aby lepiej zrozumieć, co się dzieje.
Czy ktoś może polecić jakieś książki lub zasoby internetowe dla początkujących?
Podobała mi się także ta strona . Ładne wprowadzenie do programowania asemblera Użyłem tej strony jako odniesienia podczas studiów na kursie Mikroprocesory i Mikrokontrolery.
Wspaniale dzięki. W jakim stopniu intuicyjny uczysz się go uczyć w porównaniu z typowym współczesnym językiem? Moja historia to 6 miesięcy c # (w przemyśle) i mniej więcej w tym samym czasie C ++ (w mojej sypialni :))
Darren Young
1
Na swoim kursie spotkałem się z programowaniem asemblera (wciąż jestem studentem) i, jak powiedziałeś w swoim pytaniu, pomogło mi to wiedzieć, jak działają systemy wbudowane. Jednak w porównaniu z wysokopoziomowymi (nowoczesnymi, jak mówisz) językami nie uważałem tego za bardzo przydatne. Wiesz, nigdy nie użyję go w mojej dziedzinie - do tworzenia stron internetowych. :)
ykombinator
2
Czy jest to ćwiczenie akademickie, czy zamierzasz używać języka asemblera, którego się uczysz? To obecnie dość wyspecjalizowane rzeczy. Optymalizacja kompilatora stała się tak dobra, że nawet coś takiego jak wysokowydajny dysk twardy zwykle zawiera około 1% podstawy kodu zapisanej w asemblerze. Idąc w dół łańcucha żywnościowego do procesorów 4-bitowych lub niektórych 8-bitowych zobaczysz znacznie więcej używanego języka asemblera.
Jeśli naprawdę chcesz wypróbować język asemblera, wybierz procesor z ładnym zestawem instrukcji. Jestem byłym pracownikiem ARM, więc prawdopodobnie jestem stronniczy, ale odkryłem, że zestaw instrukcji ARM był szczególnie łatwy do nauczenia się - byłem w stanie napisać skuteczny filtr FIR w asm trzeciego dnia pracy w firmie. Partnerzy półprzewodników ARM wysyłają obecnie około miliarda rdzeni ARM na kwartał, więc łatwo jest znaleźć firmę, która chętnie skorzysta z Twojej wiedzy ARM ASM.
Istnieje wiele tablic ewaluacyjnych ARM dostępnych za około 50 USD do wypróbowania kodu - wygląda na to, że ARM Cortex M3 będzie niezwykle popularny. Korzysta z zestawu instrukcji Thumb2 ARM, który jest nieco bardziej niejasny niż zwykły stary kod ARM32, ale wciąż dość łatwy i bardzo wydajny.
Jest to czysto akademickie / samokształcenie. Chciałbym lepiej zrozumieć zarządzanie pamięcią niskiego poziomu, a także języki wyższego poziomu.
Darren Young,
1
Zasadniczo, w sensie programowania asemblera, musisz najpierw znać podstawową architekturę, a następnie język korespondencyjny, na przykład mikrokontrolery PIC, możesz użyć kompilatora, który podałeś i języka. Używam tej strony do odwoływania się do samouczków dotyczących mikrokontrolera PIC.
Zawsze uważałem, że najtrudniejszą częścią jest hello world, który jest zwykle tylko trywialną funkcją asemblera wywoływaną z języka wyższego poziomu, jak dodawanie dwóch liczb. Gdy miniesz tę przeszkodę, wystarczy po prostu dodać instrukcje i psuedo-op (np. Definiowanie danych) do swojego repertuaru.
Byłbym drugim geekbritem, chociaż nigdy nie korzystałem z ARM. Taka minimalna architektura byłaby nie tylko łatwiejsza, ale mogłaby zbliżyć się do posiadania uzasadnionego - w przeciwieństwie do wyłącznie celu dydaktycznego.
Mam zestaw instrukcji, asembler i symulator, z kilkoma lekcjami, które zostały stworzone właśnie w tym celu. Nie mam jeszcze opinii na temat tego, jak dobrze lub źle zrobiłem, ale jest tam, daj mu 15 minut lub pół godziny, aby zobaczyć, czy to cię czegoś uczy. http://github.com/dwelch67/lsasim Po tym mam kilka głównych zestawów instrukcji, które możesz wypróbować, proste, bez fanaberii, powinny działać wszędzie tam, gdzie masz kompilator C itp.
Odpowiedzi:
Zalecana książka: Sztuka programowania w języku asemblera .
Podobała mi się także ta strona . Ładne wprowadzenie do programowania asemblera Użyłem tej strony jako odniesienia podczas studiów na kursie Mikroprocesory i Mikrokontrolery.
źródło
Czy jest to ćwiczenie akademickie, czy zamierzasz używać języka asemblera, którego się uczysz? To obecnie dość wyspecjalizowane rzeczy. Optymalizacja kompilatora stała się tak dobra, że nawet coś takiego jak wysokowydajny dysk twardy zwykle zawiera około 1% podstawy kodu zapisanej w asemblerze. Idąc w dół łańcucha żywnościowego do procesorów 4-bitowych lub niektórych 8-bitowych zobaczysz znacznie więcej używanego języka asemblera.
Jeśli naprawdę chcesz wypróbować język asemblera, wybierz procesor z ładnym zestawem instrukcji. Jestem byłym pracownikiem ARM, więc prawdopodobnie jestem stronniczy, ale odkryłem, że zestaw instrukcji ARM był szczególnie łatwy do nauczenia się - byłem w stanie napisać skuteczny filtr FIR w asm trzeciego dnia pracy w firmie. Partnerzy półprzewodników ARM wysyłają obecnie około miliarda rdzeni ARM na kwartał, więc łatwo jest znaleźć firmę, która chętnie skorzysta z Twojej wiedzy ARM ASM.
Istnieje wiele tablic ewaluacyjnych ARM dostępnych za około 50 USD do wypróbowania kodu - wygląda na to, że ARM Cortex M3 będzie niezwykle popularny. Korzysta z zestawu instrukcji Thumb2 ARM, który jest nieco bardziej niejasny niż zwykły stary kod ARM32, ale wciąż dość łatwy i bardzo wydajny.
Ta mała tablica wygląda bardzo fajnie, za 80 euro: http://www.olimex.com/dev/stm32-103stk.html
źródło
Zasadniczo, w sensie programowania asemblera, musisz najpierw znać podstawową architekturę, a następnie język korespondencyjny, na przykład mikrokontrolery PIC, możesz użyć kompilatora, który podałeś i języka. Używam tej strony do odwoływania się do samouczków dotyczących mikrokontrolera PIC.
źródło
Zawsze uważałem, że najtrudniejszą częścią jest hello world, który jest zwykle tylko trywialną funkcją asemblera wywoływaną z języka wyższego poziomu, jak dodawanie dwóch liczb. Gdy miniesz tę przeszkodę, wystarczy po prostu dodać instrukcje i psuedo-op (np. Definiowanie danych) do swojego repertuaru.
Byłbym drugim geekbritem, chociaż nigdy nie korzystałem z ARM. Taka minimalna architektura byłaby nie tylko łatwiejsza, ale mogłaby zbliżyć się do posiadania uzasadnionego - w przeciwieństwie do wyłącznie celu dydaktycznego.
źródło
Mam zestaw instrukcji, asembler i symulator, z kilkoma lekcjami, które zostały stworzone właśnie w tym celu. Nie mam jeszcze opinii na temat tego, jak dobrze lub źle zrobiłem, ale jest tam, daj mu 15 minut lub pół godziny, aby zobaczyć, czy to cię czegoś uczy. http://github.com/dwelch67/lsasim Po tym mam kilka głównych zestawów instrukcji, które możesz wypróbować, proste, bez fanaberii, powinny działać wszędzie tam, gdzie masz kompilator C itp.
źródło