Wpis z mikrobloga

#pytanie #programowanie

Mirki jak to jest? Jak skompiluje sobie program napisany w C w windowsie za pomocą np gcc do exe'ca, to jak to jest, że ten exe'c uruchomi się na komputerze z innym prockiem? Plik wykonywalny nie zawiera kodu maszynowego jak to ma miejsce przykładowo w kompilatorach na mirkoprocki? Jak ten proces tłumaczenia na język danego procesora wygląda w zwyykłym komputerze?
  • 13
  • Odpowiedz
Jeśli kompilujesz C to GCC kompiluje Ci go do assembly (z różnymi fajnymi optymalizacjami) a potem kompiluje assembly. Jeśli kompiluje np na proce x86 to na każdym procesorze z takimi samymi opcode'ami.

Co do tego co zawiera .exe

Jeśli masz aplikację .NET (.exe), to ona zawiera kod pośredni, który nie jest zrozumiały dla żadnego procesora. Do jego uruchomienia jest potrzebna maszyna wirtualna (.NET Framework).
  • Odpowiedz
@pitus_bajtus: Tego samego procesora nie mają ;)

@PanCogito: Wszystkie procki x86 mają (more or less) ten sam zestaw rozkazów. To właśnie kompatybilność z gazylionami istniejących programów skutecznie utrudnia jakiekolwiek zmiany, nawet jeśli zastosowane rozwiązania są słabe i niewydajne.
  • Odpowiedz
@PanCogito: w przypadku gdy piszesz program, który używa zewnętrznym bibliotek (czyli coś więcej niż liby standardowe) sprawa zaczyna zależeć również od tego, czy użyjesz linkowania dynamicznego czy statycznego. W przeciwnym razie jest jak pisze @KrzaQ2
  • Odpowiedz