Dlaczego C należy rekompilować dla każdej architektury? Czy to nie wszystko kończy się jako bity i bajty, ładunki i skoki? Czy nie każda architektura zasadniczo przechodzi przez najbardziej podstawowe polecenia w ten sam sposób?Dlaczego platforma C jest zależna?
Odpowiedz
- Różne procesory mają różne architektury instrukcji (np. X86 vs ARM).
- Wczesne komputery Mac wykorzystywały architekturę Motorola 68k; później używał PowerPC; a jeszcze później używał x86. Podczas każdego z tych przejść programiści musieli wysyłać pliki wykonywalne jako fat binaries, które zawierałyby kod obiektowy dla obu architektur.
- Obecne procesory x86 mają tryby 32-bitowy i 64-bitowy.
- Dlatego masz 32-bitowe i 64-bitowe wersje systemu Windows, Ubuntu itp
- Różne systemy operacyjne zapewniają różne wywołania systemowe, biblioteki, itp
- Różne wersje OS może również udostępniać różne wywołania systemowe, biblioteki itp. (Chociaż dostawcy systemów operacyjnych starają się być w miarę możliwości zgodni wstecz).
- Nawet w tym samym systemie operacyjnym nie ma gwarancji, że konwencja wywoływania będzie taka sama dla różnych kompilatorów.
- Nawet w tym samym systemie operacyjnym mogą być używane różne formaty plików wykonywalnych. Na przykład w wielu systemach uniksowych używany był format a.out, ale ostatecznie został on przełączony na ELF. W okresie przejściowym biblioteki musiały być dostarczane w obu formatach.
Ale każda maszyna ma swój własny instruction set
To jest w najlepszym razie komentarz. –
@middaparka: To wydaje się być odpowiedź, AFAICS. (Choć nie bardzo szczegółowy.) –
@OliCharlesworth Jeden z nich, tak. – glglgl
Nie każda architektura w zasadzie przejść przez najbardziej podstawowych komend w ten sam sposób?
W przeważającej części. Ale te podstawowe polecenia różnią się w inny sposób. Kompilator języka C jest odpowiedzialny za upewnienie się, że używane są poprawne reprezentacje i implementacje.
ten komentarz prawdopodobnie wyjaśnił to najlepiej dla mnie, dzięki – Aristides
Tak, ale wszystkie te obciążenia i skoki itp. Wyglądają inaczej na różnych platformach. Każda rodzina procesorów ma swój własny zestaw poleceń.
Na wyższym poziomie, jeśli mamy ten sam sprzęt, ale różne systemy operacyjne (takie jak Linux/Windows), mamy różne biblioteki, różne formaty plików wykonywalnych i tak dalej.
Wszystkie te rzeczy muszą być przestrzegane przez kompilator i linker.
Każdy spróbować streszczenie niektórych funkcji, jak każdy język zrobić, musi być dostosowany do konkretnej architektury, lub utworzyć wirtualną maszynę (dla każdej architektury), że można go uruchomić.
- 1. Obsługa zależności C++ (platforma krzyżowa)
- 2. dlaczego Hadoop nie jest w czasie rzeczywistym platforma
- 3. Czy platforma WCF jest niezależna?
- 4. Platforma sprawdzania poprawności w języku C#?
- 5. Visual Studio 2008 C++ nie platforma x64
- 6. C++ platforma Image Loader dla OpenGL
- 7. Czy funkcja rand() jest zależna od czasu w php?
- 8. Blastowa platforma LLVM
- 9. Właściwość zależności zależna od innej
- 10. Eclipse PDE: Co to jest "platforma docelowa"?
- 11. Czy dostępna jest platforma Django Book?
- 12. Metoda Bluebird's Promise.all(), gdy jedna obietnica jest zależna od innej
- 13. Jak naprawdę działa platforma .Net?
- 14. Dlaczego platforma GUI języka Java nosi nazwę "Swing?"
- 15. C++ Dlaczego połączenie jest niejednoznaczne?
- 16. Dlaczego jest usuwany [] w C++?
- 17. Dlaczego platforma Haskell nie instaluje się na OS X?
- 18. Scala zależna od ścieżki zwrotnej od parametru
- 19. platforma dźwięku z interfejsem API
- 20. wykrywanie Platforma w CUpewnij
- 21. zależna => niszcz na skojarzeniu "has_many through"
- 22. Praca w trybie uśpienia w C++, platforma: windows
- 23. Trasa Railsów zależna od bieżącego użytkownika
- 24. C++ platforma dla procesów: czy POCO lib jest dobre? inne alternatywy?
- 25. Aplikacja internetowa - platforma uwierzytelniania/logowania
- 26. Platforma niezależny Zmapowane [file] IO
- 27. Platforma (OS) wykrywanie w systemie
- 28. Najlepszy sposób, aby określić, czy zainstalowana jest platforma .NET 3.5
- 29. Co to jest platforma programistyczna dla systemu Windows Phone 7
- 30. Jaka jest najlepsza platforma/język dla gry 3D w przeglądarce?
C jest językiem średniego poziomu :) –
Kwantyfikowanie "architektury". (Czy myślisz, że układ x86 używa na przykład tych samych instrukcji co układ ARM?) –
'Czy nie każda architektura zasadniczo przechodzi przez najbardziej podstawowe polecenia w ten sam sposób?' *** Nie do końca ***. Zdecydowanie nie w * dokładnie * taki sam sposób, co oznacza niezależność od platformy. –