Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Kod maszynowy i procesor

Ostatnio zmodyfikowano 2017-03-18 19:22
Autor Wiadomość
natofp
Temat założony przez niniejszego użytkownika
Kod maszynowy i procesor
» 2017-03-17 13:41:22
Witam,

Zacznę od tego, że nie wiedziałem, gdzie umieścić ten temat, więc jeśli trzeba to proszę o przeniesienie gondola odpowiedniego działu.

Moje pytanie dotyczy działania kompilacji i kodu maszynowego. Otóż dowiedziałem się, że w procesie kompilacji kod źródłowy jest tłumaczony na kod wynikowy(maszynowy). Ten z kolei jest listą zadań do wykonania dla procesora. Na różnych komputerach mamy przecież różne procesory, a mimo to niektóre programy sa przenośne. Jak to możliwe? Proszę o poprawienie mnie jeśli jestem w błędzie lub dokładne wytłumaczenie tego zjawiska. Z góry dziękuję.

Pozdrawiam
P-159062
Rashmistrz
» 2017-03-17 14:35:12
Tu znajdziesz dużo informacji na temat kompilacjii,
jak i może również to czego szukasz:
Gynvael's Code: Proces Kompilacji C/C++

Na różnych komputerach mamy przecież różne procesory, a mimo to niektóre programy są przenośne. Jak to możliwe?
Kompilatory są dla różnych procesorów i systemów.
To one się tym zajmują kompilując ten sam kod.

Niestety niektóre rzeczy, biblioteki czy tam API/ABI
nie są dostępne dla każdego systemu i procesora.

Ale np. taka Java wykminiła sobie sposób i używa maszyny wirtualnej.
Ale taki sposóbb wymaga implementacji maszyny dla każdego procesora.
P-159064
pekfos
» 2017-03-17 17:55:34
Na różnych komputerach mamy przecież różne procesory, a mimo to niektóre programy sa przenośne. Jak to możliwe?
Jeśli procesor ma taką samą architekturę i zestaw instrukcji, to na nim kod maszynowy programu też zadziała. Jak pobierasz program, to masz link do pobrania dla np. "x86", a nie "Intel Core i5-6400".
P-159069
natofp
Temat założony przez niniejszego użytkownika
» 2017-03-18 09:43:29
W takim razie mam kolejne pytanie. Z tego co napisałeś wynika że procesory o tej samej architekturze mają często ten sam zestaw instrukcji? Jak wygląda to w praktyce?
P-159081
j23
» 2017-03-18 11:19:13
W praktyce wygląda to tak, że zestaw instrukcji jest taki sam, choć oczywiście mogą dojść instrukcje rozszerzające możliwości CPU (dawniej 3DNow!, MMX, SSE1/2/3/4/5).
P-159084
mateczek
» 2017-03-18 12:54:52
kompilator buduje program na konkretną architekturę i pod konkretny system operacyjny. Tak skompilowany program pracuje na konkretnym procesorze i woła funkcje konkretnego systemu operacyjnego, np w celu uzyskania dostępu do pliku. Ten sam kod źródłowy wygeneruje inny plik wynikowy w zależności na jaki procesor i na jaki OS zostanie skompilowany.
P-159086
natofp
Temat założony przez niniejszego użytkownika
» 2017-03-18 14:40:36
Ostatnie pytanie. Czyli jak przenosimy program  na inny komputer musimy go tam ponownie skompilować?
P-159091
jankowalski25
» 2017-03-18 14:55:05
na inny komputer
Zależy, jak zdefiniujesz "inny komputer". Jeśli korzysta z innego procesora (czyli przejście w stylu "Intel->MIPS", a nie "Intel(x86)->AMD(x86)") lub z innego systemu operacyjnego (przejście w stylu "Windows->GNU/Linux", a nie "Windows 95->Windows 98"), to prawie na pewno będzie potrzebna ponowna kompilacja. Jest kilka wyjątków, ale początkujących raczej nie dotyczą.
P-159092
« 1 » 2
  Strona 1 z 2 Następna strona