Autor Thema: Assembler vs. Compiler  (Gelesen 16461 mal)

bscreator

  • Gast
Gespeichert
« 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

TeeJay

  • Beiträge: 630
    • Profil anzeigen
    • http://www.jay-code.de
Gespeichert
« Antwort #1 am: 05. June 2004, 12:40 »
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.
----------------------
Redakteur bei LowLevel

lobmann

  • Beiträge: 243
    • Profil anzeigen
    • http://www.fallek.de.vu
Gespeichert
« Antwort #2 am: 05. June 2004, 12:43 »
Nimm als Beispiel Linux da ist alles assembler gecodete strikt von c getrennt dadurch läufts auf den verschiedensten architekturen
Man kann doch nem alten Mann nicht in den Bart spucken und sagen es hat geschneit

joachim_neu

  • Beiträge: 1 228
    • Profil anzeigen
    • http://www.joachim-neu.de
Gespeichert
« Antwort #3 am: 05. June 2004, 13:57 »
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...
http://www.joachim-neu.de | http://www.orbitalpirates.de | http://www.middleageworld.de

System: 256 RAM, GeForce 2 MX 400, AMD Athlon XP 1600+, Windows XP, 1x Diskette, 1x DVD-ROM, 1x CD-R(W) Brenner,...

lobmann

  • Beiträge: 243
    • Profil anzeigen
    • http://www.fallek.de.vu
Gespeichert
« Antwort #4 am: 05. June 2004, 14:07 »
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.
Man kann doch nem alten Mann nicht in den Bart spucken und sagen es hat geschneit

StrgAltEntf

  • Beiträge: 22
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 05. June 2004, 21:20 »
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

chr15

  • Beiträge: 279
    • Profil anzeigen
    • http://www.clinux.de.vu
Gespeichert
« Antwort #6 am: 05. June 2004, 21:43 »
@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!

Another Stupid Coder

  • Beiträge: 749
    • Profil anzeigen
Gespeichert
« Antwort #7 am: 06. June 2004, 10:47 »
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ß...)

bscreator

  • Gast
Gespeichert
« Antwort #8 am: 06. June 2004, 14:13 »
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 ?

TeeJay

  • Beiträge: 630
    • Profil anzeigen
    • http://www.jay-code.de
Gespeichert
« Antwort #9 am: 06. June 2004, 15:51 »
Wenn dein BIOS das unterstützt könnte das gehen.
----------------------
Redakteur bei LowLevel

kleiner

  • Beiträge: 131
    • Profil anzeigen
Gespeichert
« Antwort #10 am: 07. June 2004, 16:19 »
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.

bscreator

  • Gast
Gespeichert
« Antwort #11 am: 07. June 2004, 17:26 »
Wenn ich also Pech hab, dann kann ich ein auf der USB-Festplatte installiertes Betriebssystem gar nicht starten, oder ?

Another Stupid Coder

  • Beiträge: 749
    • Profil anzeigen
Gespeichert
« Antwort #12 am: 08. June 2004, 08:39 »
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?

bscreator

  • Gast
Gespeichert
« Antwort #13 am: 08. June 2004, 09:54 »
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 ?

Another Stupid Coder

  • Beiträge: 749
    • Profil anzeigen
Gespeichert
« Antwort #14 am: 08. June 2004, 18:46 »
Danke ich wollte nur sicherheitshalber nachfragen :) Ich hoffe mal das mein BIOS per USB booten kann :)

 

Einloggen