Lowlevel
OffZone => Offtopic => Thema gestartet von: bscreator am 05. June 2004, 12:13
-
Hallo Leute,
Immer wieder hört man, dass die Programmiersprache C portabler als andere Sprachen sein soll. Was macht C eigentlich so portabel ?
Was macht ein C-Compiler soviel anders als ein Assembler ?
Ich meine, letztendlich wird doch sowieso alles in Maschinensprache umgewandelt, oder ?
mfg,
bscreator
-
Im Grunde hast du recht.
Aber es gibt ja auch unterschiedliche Prozessoren die einen unterschiedlichen Assembler-Syntax haben.
Nun ist es halt so, das es verschiedene C-Compiler gibt, die den C-Code in den Assemblercode für einen bestimmten Prozessor übersetzen.
Somit schreibst du ein Programm nur einmal in C und läst es dann einfach mit verschiedenen Compilern compilieren und kannst es somit auf verschiedenen Prozessoren laufen lassen.
Diesen Vorteil hat Assembler nicht, da du hier direkt die Befehle eintippst, wie sie der Prozessor haben möchte.
Auch haben unterschiedliche Prozessoren andere Bezeichnungen und eine andere Anzahl an Registern.
-
Nimm als Beispiel Linux da ist alles assembler gecodete strikt von c getrennt dadurch läufts auf den verschiedensten architekturen
-
aber irgendwie laufen bei mir alle codes die ich mir bisher an ASM runtergeladen habe und meine laufen auf anderen rechnern auch... ich glaube, dass mittlerweile alle Befehle und Register standardisiert sind oder werden, zumindest bei Intel und AMD...
-
Ja klar ich spreche ja auch nicht von intel und amd den liegt ja im prinzip die gleiche Architektur zu grunde, is ja klar sonst gäbe es ja z.B. nen windows für amd und windows für intel. Linux läuft ja auch auf Motorola 68000(Amiga benutzt den), Sparc, Alpha usw..., und denen liegt halt ne andere Architektur zu grunde, da gibt z.B. nich sowas wie RealMode und ProtectedMode usw. usw.
-
Genau so isset.
Assembler spricht die 'Muttersprache' einer CPU. C wiederum kann in verschiedene 'Dialekte' für verschiedene Prozessoren übersetzt werden und ist darum portabler. Basic setzt beispielsweise auf das Betriebssystem auf und ist (notfalls!) auch portabel, es muss nur den passenden Compiler/Interpreter für das Zielsystem / die Ziel-CPU geben.
Diverse andere Architekturen sind i386 (Standard-PCs von heute und vorgestern), IA64 (64-Bit-CPUs von Intel), m68k (Motorola 68000er, benutzt vom Amiga500, Atari usw.), ppc (PowerPC, benutzt von moderneren Amigas und Apples [glaub ich]), Zilog (z.B. Z80->KC85 oder Gameboy) usw.
Das portabelste System ist übrigens NetBSD. Das läuft auf fast allen Architekturen (auch PS2, XBox war in Entwicklung, als ich mal nachgeguckt hatte =)).
Soviel dazu
StrgAltEntf
-
@StrgAltEntf: Also Linux ist auch sehr kompatibel (20 bis 30 Architekturen werden Standardmäßig unterstützt, dann noch viele Abwandungen). Zur X-Box: Das ist auch ein 386er, Linux läuft darauf auch schon!
-
Also (;)) ich bin der Meinung das Linux auch nicht minder kompatibel ist als diverse BSDs (FreeBSD, NetBSD, OpenBSD,...) denn Linux läuft ebenfalls auf XBox (auf einem Linux-Tag haben (vielleicht tun sie es immer noch) ein paar entwickler mal angeboten deine XBox linuxfähig zu machen) für die PS-2 kann man sich hardware und Black-Rhino-Linux kaufen (um 100⬠oder so...) mit diesem Linux kann man dann allerdings nur Programme basteln die unter Linux laufen (also keine PS2-spiele) und wenn man programme will, so muss man die logischerweise vom source basteln (sofern sie nicht bei Black-Rhino dabei sind) denn die PS2 hat keinen x86-Prozessor drinnen (soviel ich weiß...)
-
Danke,
TeeJay, lobmann, joachim_neu, StrgAltEntf, chr15 und Another Stupid Coder.
Ihr habt mir sehr geholfen.
Noch was:
Man kann von einer externen Festplatte, d.h. von einer Festplatte, die per USB an den Rechner angeschlossen ist, nicht booten, oder ?
-
Wenn dein BIOS das unterstützt könnte das gehen.
-
Also irgendeine Zeitschrift hatte letztens behauptet, dass Linux dass unabhängiste sei, weil es für alle möglichen Sachen auch embedded benutzt wird. Als Antwort darauf kam der Hinweis, dass NetBSD von mehr als 4 mal so vielen Plattformen unterstüzt wird.
-
Wenn ich also Pech hab, dann kann ich ein auf der USB-Festplatte installiertes Betriebssystem gar nicht starten, oder ?
-
Ja, es könnte so sein, Wenn du Pech hast.
Ich hätte auch noch eine Frage dazu.
Ich habe einen USB-Stick und MP3 Player in einem den ich in Fat formatieren kann. Um einen Bootsector draufzuschreiben muss ich das dann einfach so machen wie bei einem Diskettenlaufwerk?
-
Nun, ich bin kein Profi auf diesem Gebiet, aber ich denke schon.
Der Bootsektor befindet sich doch immer in den ersten 512 Bytes. Das ist bei jedem Dateisystem, sei es FATXX, NTFS, HPFS, etc., so. Warum sollte es dann hier nicht auch so sein ?
-
Danke ich wollte nur sicherheitshalber nachfragen :) Ich hoffe mal das mein BIOS per USB booten kann :)