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 |
|
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. |
|
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". |
|
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? |
|
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). |
|
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. |
|
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ć? |
|
jankowalski25 |
» 2017-03-18 14:55:05 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ą. |
|
« 1 » 2 |