od programu do "1" w rejestrze - jak to się dzieje?

sol
Posty: 333
Rejestracja: 19 kwie 2016, 20:09
Kontaktowanie:

od programu do "1" w rejestrze - jak to się dzieje?

Postautor: sol » 29 mar 2017, 13:41

Czcigodni,

wiem że takie pytanie ze strony studenta mechatroniki może być cokolwiek kompromitujące, ale... nie jestem w stanie zrozumieć tego na własną rękę, więc sięgam po pomoc :)

no więc jak to się dzieje że piszę kod w c a na drugim końcu całego układu zapala mi się dioda? nie rozumiem konkretnie etapu translacji w całym algorytmie przetwarzania, tj pytanie z nazwy tematu, jak to się dzieje i w jakim elemencie, że z kodu (wartości abstrakcyjnej) da się wyczarować jedynkę (wartość elektryczną)

Awatar użytkownika
MosfetN
Posty: 148
Rejestracja: 13 cze 2016, 21:49
Lokalizacja: Kraków
Kontaktowanie:

Re: od programu do "1" w rejestrze - jak to się dzieje?

Postautor: MosfetN » 29 mar 2017, 14:03

Kod z C jest "konwertowany" przez kompilator na instrukcje assemblera a te z kolei na "kod maszynowy" który jest wykonywany przez ALU(CPU).
Np. z AVR,ków (C) linia "PORTB = 0b00000001" przykładowo zostanie skonwertowana na(ASM):" ldi r16,00000001b ,out PORTB,r16" a to z kolei zostaje przetłumaczone na 16 bitowe kody operacyjne dla dla procesora. Instrukcje te są później umieszczone w pamięci i po kolei wykonywane przez CPU. Tak to wygląda w dużym uproszczeniu :)
---> https://bytechlab.com/pl/ <---
Drukarki: RAPTOR XLS - 360

sol
Posty: 333
Rejestracja: 19 kwie 2016, 20:09
Kontaktowanie:

Re: od programu do "1" w rejestrze - jak to się dzieje?

Postautor: sol » 29 mar 2017, 14:52

to wszystko rozumiem, chodzi mi o magię na etapiee przepisania wartości kodu maszynowego (wciąż abstract) na wartości wypalone w eepromie, jak z wartości maksymalnie niskopoziomowej (wirtualnej) tworzy się wartość elektryczna, jak procesor przetwarza te wartości bo wciąż tego krytycznego etapu nie ogarniam

mcexperts
Posty: 566
Rejestracja: 19 kwie 2016, 18:40
Kontaktowanie:

Re: od programu do "1" w rejestrze - jak to się dzieje?

Postautor: mcexperts » 29 mar 2017, 15:13

Bo tam nie ma żadnej magii. Traktuj ten kod maszynowy jako część procka, się facto nóżki procesora są komórkami pamięci. Zmieniasz stan nóżki zmieniasz stan komórki pamięci.
Kurczak się prościej nie da...

sol
Posty: 333
Rejestracja: 19 kwie 2016, 20:09
Kontaktowanie:

Re: od programu do "1" w rejestrze - jak to się dzieje?

Postautor: sol » 29 mar 2017, 17:55

dalej jest to dla mnie niezrozumiałem/zbyt abstrakcyjne, jak nagle wartość nieekeltryczna staje się elektryczna, wciąż mam poczucie, że jest jakiś aspekt którego nie ogarniam, bo tranzystory w procku same z siebie kodu z c nie czytają :D

mcexperts
Posty: 566
Rejestracja: 19 kwie 2016, 18:40
Kontaktowanie:

Re: od programu do "1" w rejestrze - jak to się dzieje?

Postautor: mcexperts » 29 mar 2017, 18:38

Ale jak kod zmienia komórki pamięci ogarniasz? Wpisz na stos, skocz 4 w dół albo w górę, zdejmij ze stosu, zapisz wynik w rejestrze "C" etc?

Awatar użytkownika
way
Posty: 159
Rejestracja: 29 lip 2016, 6:42
Kontaktowanie:

Re: od programu do "1" w rejestrze - jak to się dzieje?

Postautor: way » 29 mar 2017, 18:56

Nie ktoś podrzuci jakimś filmem albo grafiką bo temat ciekawy :OK: Nigdy nie rozkminiałem tego tak daleko, wystarczyła mi wiedza że tam pod drodze jest assembler i jakoś to działa. Na szczęście, nie muszę tego rozumieć :mrgreen:

Awatar użytkownika
dziobu
Posty: 353
Rejestracja: 22 wrz 2016, 16:17
Kontaktowanie:

Re: od programu do "1" w rejestrze - jak to się dzieje?

Postautor: dziobu » 29 mar 2017, 21:11

imho:
Najprościej można zrozumieć procesor pisząc w assemblerze. Do prostych rzeczy (miganie nóżką) architektura nie ma znaczenia ale potem gdy trzeba zrobić coś bardziej wyrafinowanego, to już się przydaje. Z tym, że wtedy jest dużo prościej: wiadomo czego szukać, o co pytać i jak to potem wszystko ożenić żeby działało. Natomiast sam asm, nawet z olaniem zasady działania reszty, daje możliwość liźnięcia sprzętu i zapanowania nad nim - można przy użyciu debuggera i miernika/oscyloskopu zatrzymać rdzeń i krok po kroku sprawdzić jak operowanie na rejestrach przekłada się na sytuację na sprzęcie (wartości innych rejestrów, stany nóżek). Oczywiście to nie tłumaczy teorii ale pozwala "poczuć" sprzęt - takie doświadczenia wsparte schematami i dokumentacją producenta pozwala zrozumieć jak i dlaczego to działa. A czytanie teorii nigdy nie da tyle co praca na żywym organizmie.

Jeśli kogoś rajcuje zbiór suchych informacji to polecam lekturę pierwszych kilku linków: https://www.google.pl/?gws_rd=ssl#safe= ... ura+risc&*
Jest wystarczająco nudno i uniwersytecko ;)
Najzabawniejsze jest to, że choć piszę w assemblerze od wielu lat na kilka różnych platform i mniej-więcej kojarzę co i jak to nie rozumiem większości opisów które znalazłem w sieci ;p No ale ja to ja ;)
Pozdrawiam
Paweł

Moje twory w 3D

sol
Posty: 333
Rejestracja: 19 kwie 2016, 20:09
Kontaktowanie:

Re: od programu do "1" w rejestrze - jak to się dzieje?

Postautor: sol » 30 mar 2017, 6:04

Ogarniam caly algorytm dzialania procesora, algorytm bloczkowy moge o 3 w nocy z pamieci wyrysowac, niemniej jednak nurtuje mnie jak to jest zrealizowane sprzetowo, a tlumaczenie "tak to dziala, zaufaj mi" tak czesto przekazywane przez wykladowcow po prostu nie jest dla mnie wystarczajace

mcexperts
Posty: 566
Rejestracja: 19 kwie 2016, 18:40
Kontaktowanie:

Re: od programu do "1" w rejestrze - jak to się dzieje?

Postautor: mcexperts » 30 mar 2017, 6:44

Więcej zaufania do wykładowcy. Umiesz zmieniać zawartość komórki pamięci? Umiesz. Tak samo zmieniasz stan wyprowadzeń. I czytasz.


Wróć do „Nie wiesz gdzie pytać? Zapytaj tutaj …”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 2 gości