Materiały do architektury procesorów

0

Cześć,

ostatnio bardzo mocno wnikam w działanie języków programowania, do tego stopnia iż zaczynam się odbijać od bariery o nazwie: asembler, kod maszynowy oraz architektura procesorów.

Pytanie jest następujące - czy jesteście w stanie polecić jakieś materiały do nauki tego typu tematów? Pewnie na studiach informatycznych studenci mają przedmioty z tego obszaru (albo i nie) lecz ja niestety na infie nigdy nie byłem stąd pytanie kieruje do was.

Może korzystaliście kiedyś z jakiejś książki do nauki tych rzeczy. Teraz dominującą architekturą jest chyba x86 więc pewnie fajnie by było gdyby materiały uderzały w te tematy - nawet od strony elektroniczno/fizycznej ale aby było wskazane jak to ma się do uruchamiania tam kodu.

Ewentualnie - jakby był jakiś materiał który idzie w taką stronę : C/C++ -> asm -> kod maszynowy -> procesory. To również byłoby coś do czego na pewno bym zajrzał..
A gdyby gdzieś też przeplotło się coś o architekturze arm to byłoby idealnie.. .

Mamy tu ekspertów z programowania i od IT ogólnie, więc pytam z nadzieją że ktoś się podzieli wiedzą :) .

1
MateInf napisał(a):

Pytanie jest następujące - czy jesteście w stanie polecić jakieś materiały do nauki tego typu tematów? Pewnie na studiach informatycznych studenci mają przedmioty z tego obszaru (albo i nie) lecz ja niestety na infie nigdy nie byłem stąd pytanie kieruje do was.

Youtube:
jak działa mikroprocesor
podstawy assemblera

Teraz dominującą architekturą jest chyba x86 więc pewnie fajnie by było gdyby materiały uderzały w te tematy

Nie jest dominującą architekturą. Obecnie dominującą architekturą są procesory na bazie ARM/RISC.
80x86 występuje już właściwie tylko i wyłącznie w komputerach typu PC.

nawet od strony elektroniczno/fizycznej ale aby było wskazane jak to ma się do uruchamiania tam kodu.

Od strony elektronicznej lepiej nikt CI nie omówi: hostoryczna mera 400

Ewentualnie - jakby był jakiś materiał który idzie w taką stronę : C/C++ -> asm -> kod maszynowy -> procesory.

Musisz pobrać kompilator ASM i zacząć pisać żadna książka Ci tu specjalnie nie pomoże. W sieci jest taki ogrom materiałów, że będziesz mógł sobie wybrać kolor tła poradnika wg którego będziesz się uczył.

A gdyby gdzieś też przeplotło się coś o architekturze arm to byłoby idealnie.. .

ARM assembler podstawy RaspBerry Pi

Mamy tu ekspertów z programowania i od IT ogólnie, więc pytam z nadzieją że ktoś się podzieli wiedzą :) .

Nie sądzę aby ktokolwiek chciał się dzielić wiedzą w obliczu ogromu darmowej wiedzy z sieci dostępnej na kilka kliknięć.

0

Może zacznij od jakichś 8-mio bitowców, np. 8080 - będzie Ci prościej zrozumieć a potem po prostu rośnie liczba instrukcji ale ogólna zasada jest taka sama

0

Ja kiedyś czytałem książkę Gyna i tam był taki rozdział o architekturze, dla ułatwienia była dość prosta virtualna maszyna, dodatkowo były różne zadania, ja wtedy napisałem do niej disassemblera, który tłumaczył bajty na instrukcje, normalnie raczej by się nie chciało pisać ze względu na ilość instrukcji, tutaj akurat była skromna ilość to można było pacnąć w notatniku.

Potem było zadanie do zcrackowania i ten napisany disassembler mi pomógł potem szybciej rozwiązać zadanie.

Tę książkę czytałem wiele lat temu, pamiętam tylko z niej dwa działy o tym procesorze i bitmapie.
Książka się nazywała Zrozumieć programowanie.

C język jest obowiązkowy, ale C++ też warto znać, jak poznasz podstawowe funkcje assemblera to zrozumiesz, że tak na prawdę możesz i tak to wszystko robić w C, specjalne instrukcje możesz sobie ze wstawek dodawać, ale to bardzo specyficzne przypadki.

Warto porobić crackme zadania, żeby sprawdzić swoją wiedzę z assemblera.

Ogólnie programowanie w assemblerze to i tak programowanie w wyższym języku, jak się tak zastanowić to chcesz wypisać sobie na ekranie konsoli tekst, w wysokopoziomowym języku robisz print("text"), a tu musisz trochę pomyśleć, print wysyła dane na stdout, a stdout to plik, w linuxie wszystko jest plikiem, to musimy go jak plik otworzyć, tyle że już jest otwarty automatycznie to tylko robimy syscalla do write(1, *txt, size), tak mniej więcej w C to wygląda, w asm będziemy musieli wrzucić te parametry do rejestrów, trzeba sprawdzić w dokumentacji, do którego wsadzić pointer, wielkość i deskryptor, no i wywołać syscalla lub interrupt.

Większość myślenia i tak jest w językach wysokopoziomowych tylko potem detale trzeba uzupełnić, coś jak od ogółu do szczegółu.

Znając podstawowe instrukcje asemblera i jak działa potem program, możesz pokusić się o stworzenie własnego procesora, robisz go na logice boolowskiej, najpierw jakieś podstawowe operacje add, sub, mul, multiplexer itp.
Możesz je wykonać jako równanie lub mapa karnaugh.

I potem jak chcesz już własny procesor zbudować to możesz skorzystać z fpga i ewentualnie korzystać z open source projektu RISC-V, żeby podglądać jak jest zaimplementowany procesor, wzorować się.

0

Ogarnij jak działa Intel 4004. Dalej pójdzie z górki.

1

Na coursera są fajne kursy o tym.

Build a Modern Computer from First Principles: From Nand to Tetris (Project-Centered Course):
https://www.coursera.org/learn/build-a-computer

Computer architecture:
https://www.coursera.org/learn/comparch/

Chociaż nie zrobiłem ich do końca, tylko zacząłem i czekają aż będę miał czas i motywację.

Chociaż na początku i tak lepiej przejrzeć coś bardziej big picture, np. obejrzeć sobie parę filmików na Youtube, żeby mieć ogólne pojęcie.

0

tu jest symulatro dla 8051
https://sourceforge.net/projects/mcu8051ide/

generalnie na naszych polibudach naklepali sporo materiałów z ich jakością bywa różnie ale warto przejrzeć co pwr,agh czy pw ma w annałach.
przykład
https://home.agh.edu.pl/~wraczka/files/Dokumenty8051/DSM51ASS_zmodyfikowany.pdf
http://www.zstio-elektronika.pl/pliki_t_telekomunikacji/tk_z1_01.pdf

0

Przede wszystkim manuale od producentów procesorów (są za darmo do ściągnięcia).

donPietro napisał(a):

https://4programmers.net/Forum/Oceny_i_recenzje/362079-fragment_mojej_ksiazki_assembler_x86_programowanie_i_podstawy_systemow_operacyjnych

Słabe.

Opis rejestrów segmentowych rodem z procesorów 8086, 8088 i 80186, czyli sprzed 1982 roku, bo wtedy na rynku pojawił się procesor 80286 XD

1 użytkowników online, w tym zalogowanych: 0, gości: 1