Forum: PC-Programmierung PC Programmierung auf unterster Ebene


von schoof (Gast)


Lesenswert?

Hallo allerseits, ich möchte mich mit der Programmierung von PCs 
beschäftigen, allerdings auf unterster Ebene. Ich möchte verstehen wie 
die Hardware arbeitet und wie man auf diese zugreift und programmiert. 
Ich suche ein dafür geeignetes Buch, je ausführlicher dieses ist umso 
besser. Ich hoffe ich konnte einigermaßen zum Ausdruck bringen was ich 
meine.
Wenn ich einen vergleich machen müsste würde ich die Dokumentation von 
Mikrocontrollern heranziehen, die Doku beschreibt die Hardware und deren 
Programmierung, so etwas suche ich für PCs.
Ich habe auf diesem Gebiet noch keine Erfahrung, will mich aber wirklich 
einarbeiten, es macht nichts wenn es schwer und langwierig ist.

Ich habe auch selbst etwas im Internet gesucht und bin auf diese beiden 
Bücher gestoßen:

Mikroprozessortechnik - Klaus Wüst (ist etwas kurz??)
Mikroprozessortechnik und Rechnerstrukturen - Thomas Flik
Computerarchitektur. Strukturen, Konzepte, Grundlagen - Andrew S. 
Tanenbaum

Könnt ihr mir etwas besseres empfehlen? Sind die von mir genannten 
Bücher geeignet für mein vorhaben? Es dürfen auch englischsprachige 
Bücher sein.

Mir sind eure Empfehlungen wichtig!

: Verschoben durch User
von Peter II (Gast)


Lesenswert?

schoof schrieb:
> Wenn ich einen vergleich machen müsste würde ich die Dokumentation von
> Mikrocontrollern heranziehen, die Doku beschreibt die Hardware und deren
> Programmierung, so etwas suche ich für PCs.

warum nimmst du dann nicht die Doku von den aktuellen CPUs von Intel.

von Martin G. (Firma: http://www.gyurma.de) (martin_g)


Lesenswert?

Unterste Ebenen sind auch sehr vielschichtig.

Bis wie tief willste denn gehen?

Sehr hilfreich sind zum Beispiel die Programmierhandbücher für Linux 
Kernel Treiber. Da biste schon auf Registerebenen unterwegs.

von Dennis S. (eltio)


Lesenswert?

Hier sollte sich einiges an Informationen finden lassen:
http://www.intel.de/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-manual-325462.pdf

Aber ob sich der Aufwand lohnt?

von (prx) A. K. (prx)


Lesenswert?

schoof schrieb:
> es macht nichts wenn es schwer und langwierig ist.

Das wird es. Wenn du sämtliche Handbücher zusammennimmst, die diese 
Ebene eines heutigen PCs ausmachen, dann ist der virtuelle Regalmeter 
voll. Und nicht alle Information dazu ist frei verfügbar.

Anno IBM PC/XT war das noch etwas einfacher. Das schöne daran ist 
allerdings, dass die heutigen PCs auch die damalige Software zumindest 
dem Prinzip nach starten können, sofern kein UEFI-BIOS das verhindert.

: Bearbeitet durch User
von C. W. (chefkoch)


Lesenswert?

Naja - wenn man sich einen alten ISA-Rechner holt kann man sogar ein 
HD44780-Display in den Bus hängen und viele andere Spielereien zum Thema 
Mikroprozessor durchspielen.

von schoof (Gast)


Lesenswert?

Martin G. schrieb:
> Unterste Ebenen sind auch sehr vielschichtig.
>
> Bis wie tief willste denn gehen?

Da ich mich damit noch nicht beschäftigt habe, kann ich gar nicht genau 
sagen auf was es mir ankommmt. Ein wirklich absolut minimalistisches OS 
zu entwickeln wäre vielleicht der richtige Anfang? Da müsste ich 
eigentlich alles ansprechen was so im PC drinsitzt.

von Joe F. (easylife)


Lesenswert?

schoof schrieb:
> Da müsste ich
> eigentlich alles ansprechen was so im PC drinsitzt.

Und das ist heutzutage eine fast unüberschaubare Menge an sehr 
komplizierter Hardware...

von Joachim B. (jar)


Lesenswert?

schoof schrieb:
> Ein wirklich absolut minimalistisches OS
> zu entwickeln wäre vielleicht der richtige Anfang? Da müsste ich
> eigentlich alles ansprechen was so im PC drinsitzt.

dann versuche einen alten DOS Rechner zu bekommen mit max. 286er, besser 
8088
http://www.ebay.de/itm/Olivetti-PCS-286-Computer-1x-Floppy-HDD-/171876721930?hash=item2804a6a50a


leicher wäre doch ein Z80 CP/M single Board.
http://www.pci-card.com/euro-z80.html

von Peter II (Gast)


Lesenswert?

schoof schrieb:
> Ein wirklich absolut minimalistisches OS
> zu entwickeln wäre vielleicht der richtige Anfang? Da müsste ich
> eigentlich alles ansprechen was so im PC drinsitzt.

nein, z.b. DOS nutzt nur ein Bruchteil der Fähigkeit von einen aktuellen 
PC.

von Eric B. (beric)


Lesenswert?

schoof schrieb:
> Ein wirklich absolut minimalistisches OS
> zu entwickeln wäre vielleicht der richtige Anfang?

Ja. Dazu gibt es zahlreiche Bücher und Websites.
Ganz hilfreich fand ich http://wiki.osdev.org/Tutorials

> Da müsste ich eigentlich alles ansprechen was so im PC drinsitzt.

Wohl kaum. Ein wirklich minimalistisches OS macht nix mit deiner 
Graphikkarte (außer ein bisschen Text ausgeben vielleicht), deine 
Soundkarte oder Netzwerk.

von Peter II (Gast)


Lesenswert?

Joachim B. schrieb:
> dann versuche einen alten DOS Rechner zu bekommen mit max. 286er, besser
> 8088
> Ebay-Artikel Nr. 171876721930

kann man sich in form einer Virtuelle Maschine einfach Downloaden - wozu 
noch Hardware?

von (prx) A. K. (prx)


Lesenswert?

Joachim B. schrieb:
> dann versuche einen alten DOS Rechner zu bekommen

Eigentlich braucht er nur die Doku davon. Nutzen kann er diese 
Erkenntnisse auch mit neueren Rechnern. Da fehlt dann zwar sehr viel von 
dem, was die ausmachen, aber so ganz geschlachtet wurde die heilige Kuh 
"Kompatibilität" noch nicht.

Und mit virtueller Hardware wirds ohnehin einfacher. Also als VM.

von Dumdi D. (dumdidum)


Lesenswert?

schoof schrieb:
> allerdings auf unterster Ebene.

Ich kann da so eine (sinnvolle) Zwischenebene anbieten. Ich hatte mal 
das Buch 'PC Intern' oder so (ich würde da auch verschieden Auflagen 
überprüfen), und die sind schon weit rein gegangen. Haben aber bei den 
BIOS-Aufrufen aufgehört. Und das ist auch erstmal so sinnvoll. Beim PC 
ist erstmal unbekannt welchen Hardware eingebaut ist, und die 'unterste 
genormte' Schicht ist der BIOS Aufruf. Dieses BIOS wird ja vom Herstelle 
mitgeliefert.
Zudem enthält das Buch auch noch eine Einführung über die 
unterschiedlichen Prozessormodi.

Das würde ich mit erst einmal anschauen. Damit (und mit Hilfe des 
Internets) könntest Du schon ein eigenes Bootbares Betriebssystem 
schreiben, falls Du das denn möchtest.

Falls Du noch tiefer einsteigen möchtest, würde ich danach versuchen ein 
Motherboard mit Chips zu bekommen, zu denen es Datenblätter gibt, und 
danach das Bios auslesen und versuchen einzelne diese Teile der BIOS-API 
zu verstehen.

Ich bin diesen Weg nicht gegangen, denke aber es sollte möglich sein. 
Wobei man fragt sich: warum.

Sinvoller wäre es vielleicht eine PCI Karte zu entwickeln und versuchen 
einen Treiber für Windows/Linux zu schreiben. Lernt man vermutlich 
genauso viel ist nur sinnvoller.

von (prx) A. K. (prx)


Lesenswert?

Man könnte sich den Job natürlich auch einfacher gestalten, in dem man 
den RPi als PC deklariert. ;-)

von Johnny B. (johnnyb)


Lesenswert?

A. K. schrieb:
> Man könnte sich den Job natürlich auch einfacher gestalten, in dem man
> den RPi als PC deklariert. ;-)

Würde ich auch so machen und meiner Meinung nach handelt es sich bei 
einem solchen Board auch ohne wenn und aber um einen vollwertigen 
Computer.
Alternativ zum Raspberry Pi könnte man auch ein BeagleBone nehmen.
http://beagleboard.org/black

Ich finde diese Boards vorallem interessant, weil man dann mit aktueller 
Hardware arbeitet und nicht mit völlig veraltetem PC zeug aus 1990.
Ausserdem kann man immer auf bestehende (Open-Source) Betriebssysteme 
für diese Boards zurückgreifen und gucken, wie die das machen (Linux, 
RiscOS, etc.).

von schoof (Gast)


Lesenswert?

Dumdi D. schrieb:
> Sinvoller wäre es vielleicht eine PCI Karte zu entwickeln und versuchen
> einen Treiber für Windows/Linux zu schreiben. Lernt man vermutlich
> genauso viel ist nur sinnvoller.

Kannst du ein ausführliches Buch oder Tutorial empfehlen? Wäre wohl auch 
ein guter und einfacherer Anfang.

Das lowlevel-Tutorial sieht sehr interessant aus, danke!

von Peter II (Gast)


Lesenswert?

Johnny B. schrieb:
> Würde ich auch so machen und meiner Meinung nach handelt es sich bei
> einem solchen Board auch ohne wenn und aber um einen vollwertigen
> Computer.
> Alternativ zum Raspberry Pi könnte man auch ein BeagleBone nehmen.
> http://beagleboard.org/black

diese haben aber den Nachteil, das der Boot Prozess nicht standardisiert 
ist. Beim PC ist er ordentlich beschrieben. Bei den ganzen ARM-Boards 
macht jeder was er will.

Und die Doku von der Grafik im Raspi wird man auch lange suchen müssen.

von Noch einer (Gast)


Lesenswert?

Dass der Boot Prozess beim PC ordentlich beschrieben ist, kann man 
vielleicht noch so stehen lassen. Nur ist es seit UEFI dermaßen 
umfangreich -- das ist schon wieder obsolet, bevor du die Doku 
durchgearbeitet hast.

von michi42 (Gast)


Lesenswert?


von schoof (Gast)


Lesenswert?

Dumdi D. schrieb:
> Sinvoller wäre es vielleicht eine PCI Karte zu entwickeln und versuchen
> einen Treiber für Windows/Linux zu schreiben. Lernt man vermutlich
> genauso viel ist nur sinnvoller.

Kannst du ein ausführliches Buch oder Tutorial empfehlen? Wäre wohl auch
ein guter und einfacherer Anfang.

Das lowlevel-Tutorial sieht sehr interessant aus, danke!

von Pandur S. (jetztnicht)


Lesenswert?

PCI Treiber ? Vergiss das schnell wieder. Da gab's mal eine Firma 
Sysinternals (www.sysinternals.com), jetzt gehoerts zu Microsoft, die 
verkauft(e) Kurse fuer solche Anwendungen. Ich hab's mir angeschaut. Die 
Anforderungen einen Treiber zu schreiben waren zu hoch. Die Interrupts 
muss man kennen, die MMU, die Lowlevel APIs, ...

Ein Kollege hatte nach 6 Monaten das Handtuch geworfen. Es waren die 
kleinen Details, die man erst alle heausfinden muss. Microsoft hat zB 
mit den Interrupts gepfuscht.

Schau mal bei
http://www.thesycon.de/eng/home.shtml

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

> Ich möchte verstehen wie die Hardware arbeitet und wie man
> auf diese zugreift und programmiert.

Zu DOS Zeiten ging das noch. Da konnte man sich die Schaltpläne vom IBM 
PC oder AT besorgen, und die Datenblätter der dort verbauten Mikrochips. 
Hinzu kommen Laufwerke, und Peripherie.

Nur gibt es heute nicht mehr "den" Standard PC. Erstes Problem wird 
sein, einen vollständigen Schaltplan zu bekommen. Zweites Problem wird 
sein, Datenblätter von allen Chips deines konkreten Modells zu bekommen.

Und wenn du soweit bist, dann kannst du damit vielleicht deinen PC 
programmieren, aber meinen nicht, denn der besteht aus anderen Chips.

Nächste Hürde bei aktuellen Rechnern dürfte das UEFI Bios sein. Denn das 
will nur von Microsoft zertifizierte Software starten.

Dein Vorhaben ist ja ganz nett, aber nahezu unmöglich.

Ich denke, du wirst dich damit abfinden müssen, deinen PC niemals 
vollständig zu beherrschen.

von Stefan F. (Gast)


Lesenswert?

Ich habe einen alternativen Vorschlag:

Nimm den Linux Kernel als Ausgangslage und baue Dir darauf deine eigene 
Software. Das Prinzip ist simpel, sofern du einen Rechner ohne UEFI hast 
bzw. mit Legacy BISO Support:

Beim Einschalten liest er vom Bootlaufwerk (Festplatte) die 
Partitionstabelle. Dann von der bootbaren Partition den Bootsektor.

Darin befindest sich ein winzig kleines Programm (z.B. Lilo), welches 
mit Hilfe von BIOS Calls den Bootloader lädt und startet.

Der Bootloader wiederum lädt den Linux Kernel in den Speicher und 
startet ihn mit den nötigen Parameters. Einer davon gibt an, wie das 
root Filesystem heisst.

Der Kernel lädt die Datei /usr/bin/init und führt sie aus.

Das heisst, dein Minimales Programm muss /usr/bin/init heissen. Das ist 
zunächst die einzige Datei, die sich im Dateisystem befinden muss.

von (prx) A. K. (prx)


Lesenswert?

NB: Gehört ein Thread, der mit "PC Programmierung" anfängt,
nicht nach "PC-Programmierung"?

von Stefan F. (Gast)


Lesenswert?

Sorry, es muss /sbin/init heissen

von Peter II (Gast)


Lesenswert?

Stefan U. schrieb:
> Nur gibt es heute nicht mehr "den" Standard PC. Erstes Problem wird
> sein, einen vollständigen Schaltplan zu bekommen. Zweites Problem wird
> sein, Datenblätter von allen Chips deines konkreten Modells zu bekommen.

CPU und Chipsatz kommen von Intel - da gibt auch die Doku.

> Nächste Hürde bei aktuellen Rechnern dürfte das UEFI Bios sein. Denn das
> will nur von Microsoft zertifizierte Software starten.
warum schreibt jeder den Unsinn? hast du schon mal einen PC gesehen wo 
das der Fall ist ( also nicht einfach abschaltbar?).
MS sagt nur das es vorhanden sein muss, mehr nicht. Wenn es nicht 
braucht schaltet es einfach ab. Nur auf ARM Geräten ist es nicht 
abschaltbar.

PC haben zum glück standard-Schnittstellen. AHCI ist dokumentiert und 
funktioniert auf AMD und Intel Kisten. Selbst USB 2.0 sollte nicht das 
Problem sein, ist auch im UHCI definiert. Dabei ist es egal was für 
Chips verbaut sind.

Aber sinnlos finde ich das unterfangen trotzdem, das wissen wird später 
kaum gebraucht. Sinnvoller ist mal mit den normalen 
Kernel-Schnittstellen beschäftigen. (Seriellen Schnittstelle, USB usw. )

von Stefan F. (Gast)


Lesenswert?

> hast du schon mal einen PC gesehen wo das der Fall ist

Ja, zumindest fast. Auf den Laptop meiner Frau musste ich zuerst ein 
Service-Tool von HP installieren, um den Legacy BIOS Modus 
freizuschalten. Bis dahin war der "Schalter" nämlich grau, als nicht 
veränderbar.

von Sebastian (Gast)


Lesenswert?

Wenn das heißen soll "ohne Betriebssystem programmieren" oder 
"Betriebssystem selbst programmieren", also bare-metal auf PC, dann 
empfehlen sich die Bücher:

- PC Intern 4.0 (Tischer)
- Der PC als Mikrocontroller (Matthes)

beide nur antiquarisch zu haben.

Online-Ressourcen gibt es auch, z.B. hier: 
http://www.lowlevel.eu/wiki/Hauptseite

Wichtig ist, daß die verwendete Hardware ein klassisches BIOS hat, bei 
Industrieboards ist das oft noch der Fall, aktuelle Consumerware 
unterstützt teilweise nur noch UEFI.

von Peter II (Gast)


Lesenswert?

Sebastian schrieb:
> Wichtig ist, daß die verwendete Hardware ein klassisches BIOS hat, bei
> Industrieboards ist das oft noch der Fall, aktuelle Consumerware
> unterstützt teilweise nur noch UEFI.

und? UEFI hat ein Legacy-BIOS-Modus- der macht dann das gleich wie das 
Bios.

von Stefan F. (Gast)


Lesenswert?

> UEFI hat ein Legacy-BIOS-Modus

Wenn man Glück hat ja. Aber nur dann.

von Automatentheoretiker (Gast)


Lesenswert?

schoof schrieb:
> Mir sind eure Empfehlungen wichtig!
Meine Empfehlung: Lass es bleiben, wenn kein zwingender Grund dahinter 
steckt. Das ist ein Fass ohne Boden, der Kram mit einfachen BIOS und x86 
Geschichten aus der DOS-Steinzeit sind heute kaum mehr von nutzen.
Nimm dir einen Mikrocontroller und fummeln da drauf auf unterster Eeben 
rum, ist einfacher, genauso lehrreich und nach 8 Wochen hast du sowieso 
keine Zeit oder Lust mehr weil das Ziel fehlt.
Ansonsten reicht es erst mal diverse Bücher zu dem Thema zu lesen oder 
die oben genannten Tutrorials diverser bekannter Seiten, wurde ja alles 
schon genannt.

von Mark B. (markbrandis)


Lesenswert?

Automatentheoretiker schrieb:
> Nimm dir einen Mikrocontroller und fummeln da drauf auf unterster Eeben
> rum, ist einfacher, genauso lehrreich und nach 8 Wochen hast du sowieso
> keine Zeit oder Lust mehr weil das Ziel fehlt.
> Ansonsten reicht es erst mal diverse Bücher zu dem Thema zu lesen oder
> die oben genannten Tutrorials diverser bekannter Seiten, wurde ja alles
> schon genannt.

Full ACK.

von Peter II (Gast)


Lesenswert?

Stefan U. schrieb:
> Wenn man Glück hat ja. Aber nur dann.

sonst schreibt man sich halt ein UEFI Programm.

http://wiki.osdev.org/UEFI

von mikro77 (Gast)


Lesenswert?

Wenn's PC sein muss, dann einfach mit einem einfachen Bootloader 
anfangen...

https://en.wikibooks.org/wiki/X86_Assembly/Bootloaders

Der schreibt zwar nur Hello World, damit hat man aber eine Ausgangsbasis 
(für kleine Real-Mode und BIOS basierte Programme).

Dann kann man sich überlegen ob/wie man weiter machen möchte. :-)

von Dennis S. (eltio)


Lesenswert?

Noch ein Nachtrag von mir: Ich habe das Buch [1] noch hier im Regal 
stehen. Ist natürlich steinalt, aber durchaus lesenswert und recht 
detailliert.

Gruß
Dennis

[1] 
http://www.amazon.de/PC-Hardwarebuch-Aufbau-Funktionsweise-Programmierung-Allgemein/dp/3827313023/

von Pit (Gast)


Lesenswert?

schoof schrieb:
> Da ich mich damit noch nicht beschäftigt habe, kann ich gar nicht genau
> sagen auf was es mir ankommmt. Ein wirklich absolut minimalistisches OS
> zu entwickeln wäre vielleicht der richtige Anfang?

Wer sowas allen Ernstes in Betracht zieht, kann nur ein Troll sein oder 
direkt vom Olymp.

Viel Spass noch, Pit

von Joachim B. (jar)


Lesenswert?

Automatentheoretiker schrieb:
> Meine Empfehlung: Lass es bleiben, wenn kein zwingender Grund dahinter
> steckt. Das ist ein Fass ohne Boden, der Kram mit einfachen BIOS und x86
> Geschichten aus der DOS-Steinzeit sind heute kaum mehr von nutzen.

auch wenn ich oben einen alten PC empfohlen hatte muss ich diese Aussage 
leider unterstützen.

Es hat einfach keinen Sinn, das Wissen wäre zwar toll aber sinnlos.

Ich schmeisse alle Tipps und Tricks rund um PC und DOS raus, was soll 
ich heute damit?

Ich werde nie wieder ein DOS System mit Qemm aufsetzen, muss nicht mehr 
alle Schalter kennen und wo ich was hinschiebe.

Nach XP kann ich nicht mal mehr auf die RTC LPT COM direkt zugreifen, 
jetzt geht es ja noch mit Treiber
http://www.b-kainka.de/portnt.htm

: Bearbeitet durch User
von Schoof (Gast)


Lesenswert?

Gut, wenn es so kompliziert ist einen PC durch und durch zu kennen, 
kommt mir da eine andere Frage. Ist es dann einfacher einen Rechner 
selbst aus einzelnen komponenten aufzubauen? Also Cpu, Bus, Speicher und 
ein paar I/O-Bausteine? Quasi eine Art SPS.
Gibts hierfür ein passendes Buch?

Wenn ich die Komponenten selbst aussuche, dann bestimme ich ja selbst 
die Komplexität des Rechnersystems. Und nein ich will keine fertige SPS 
kaufen, mich interessiert die Technik und das selber machen.

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Oder du schaust dir mal an wie ein Raspi oder ein sonstiges ARM Linux 
Board bootet. Also so vom Einsprungpunkt des ARM Kern bis zu einer 
Linuxshell. Da lernt man sehr viel über Hardware Initialisierung und den 
allgemeinen Ablauf und hat den Vorteil dass alles im Quellcode vorhanden 
ist und die Doku zu den beteiligten Bauteilen auch komplett vorhanden 
ist.

Matthias

von Falk S. (db8fs)


Lesenswert?

Schoof schrieb:
> Gut, wenn es so kompliziert ist einen PC durch und durch zu
> kennen, kommt mir da eine andere Frage.

Wenn du wirklich ASM lernen willst, kommst du auf keinen Fall drum 
rum, die Prozessorarchitektur zu kennen. Sprich: welche Register gibt 
es, welche Operationen sind auf welchen Registern erlaubt und wie kommen 
Daten aus dem Arbeitsspeicher in diese Register. Dafür soll es hier im 
Forum einen ganz geheimen Link geben, wo das für Atmels AVR-Architektur 
und dessen Befehlssatz für Einsteiger beschrieben wird. Ist glaube ich 
gut versteckt ganz links oben auf der Seite.

> Ist es dann einfacher einen Rechner
> selbst aus einzelnen komponenten aufzubauen? Also Cpu, Bus, Speicher und
> ein paar I/O-Bausteine? Quasi eine Art SPS.
> Gibts hierfür ein passendes Buch?

Folge A.K.s Empfehlung und kauf dir einen Raspberry. Oder nimm QEmu und 
entwickle erstmal ein simples BareMetal-Programm für ARM. Ein klasse 
Tutorial gibt's hier:

https://balau82.wordpress.com/2010/02/28/hello-world-for-bare-metal-arm-using-qemu/

> Wenn ich die Komponenten selbst aussuche, dann bestimme ich ja selbst
> die Komplexität des Rechnersystems. Und nein ich will keine fertige SPS
> kaufen, mich interessiert die Technik und das selber machen.

Fang mit 'nem Mikrocontroller an. Das ist ein ganz einfacher 'PC' in 
einem Chip. Sprich, der hat I/O, RAM, Register und ein paar nette 
Sonderfunktionen, die man schön an einem Prozessor-Emulator 
nachvollziehen kann.

Kannst natürlich auch mit einem guten Buch zur ASM-Programmierung unter 
Windows oder Linux einsteigen. Dann nimmt dir das Betriebssystem schon 
einige Komplexität ab und du brauchst nur externe Funktionsaufrufe zu 
machen (z.B. LoadLibrary oder MessageBox Funktionsaufrufe).

Man sollte nur nicht den Fehler machen, um Elite zu sein, sofort alles 
machen zu wollen. Ist sicher verlockend aufgrund der Freiheiten, aber 
gut gewählte Einschränkungen sind für realisierbare Projekte 
entscheidend.

von Noch einer (Gast)


Lesenswert?

... auf unterster Ebene.

Bei den heutigen Intel Prozessoren kannst du den Microcode ändern. Der 
Prozessor-Kern führt gar keine x86 Befehle aus. Die Maschinenbefehle 
werden von einem Microcode interpretiert, den du ändern kannst.

von Andreas R. (daybyter)


Lesenswert?

Ich würde mich mal in der Demoszene umschauen. 8088 mph Demo, und so...

von besserwessi (Gast)


Lesenswert?

Ja nun,
was verstehst Du denn unter "unterster Ebene" ?
Wie eine von Neumann bzw. Harvard
Architektur aussieht ?
Wie eine MMU und TLB funktionieren ?
Oder wie man Treiber programmiert ?
Dann kommt's noch drauf an ob es eine Einadress, Zweiadress oder 
Dreiadress Maschine ist.
CISC oder RISC oder VLIW ?
Was willst Du also lernen ?

von Martina (Gast)


Lesenswert?

oder nimm einen Schneider CPC 464 oder 6128, der hat einen Z80 CPU einen 
einfachen Soundchip etc alles mittlerweile gut dokumentiert, und ein Z80 
ist ja problemlos mit einem IBM PC 8086 vergleichbar..bzw sogar schon 
besser als der Originale Intel..
Und der Schneider macht auch sonst mehr Spaß :-9
Das integrierte Basic ist klasse und erlaubt vollen Zugriff auf alle 
Funtkionen (im Gegensatz zu einem C64!!)
Es gibt aber auch PAscal..
Aber Du willst ja eher ASM..das geht natürlich auch

http://www.ebay.de/sch/i.html?_from=R40&_trksid=p2047675.m570.l1313.TR12.TRC2.A0.H0.Xschneider+cpc.TRS0&_nkw=schneider+cpc&_sacat=0

http://www.ebay.de/itm/DATA-BECKER-DAS-MASCHINENSPRACHEBUCH-ZUM-CPC-464-SCHNEIDER-CPC-AMSTRAD-3-/221849324036?hash=item33a7400a04

http://www.ebay.de/itm/DATA-BECKER-CPC464-GRAPHIK-SOUND-WIE-NEU-UNGELESEN-SCHNEIDER-CPC-AMSTRAD-2-/221849324045?hash=item33a7400a0d

von Klaus (Gast)


Lesenswert?

Schoof schrieb:

Es könnte uns helfen Dir einen Rat zu geben, wenn Du mal relativ 
ausführlich Deinen Hintergrund beschreibst. So in etwa was Du in einen 
Lebenslauf (natürlich natürlich die konkreten Daten durch Zeitdauer und 
Firmen/Schulen durch allgemeine Bezeichnungen ersetzen; also 
anonymisieren) und ein Verzeichnis Deiner Kenntnisse und Fähigkeiten 
schreiben würdest.
Falls Deine bisherigen Aktivitäten rein privat waren (das sog. "Hobby") 
so schreibe einmal eine Liste von Projekten, die Du fertiggestellt hast 
und was die Basis war (Eigener Entwurf vs. fremder Entwurf)

von Georg (Gast)


Lesenswert?

Falk S. schrieb:
> selbst aus einzelnen komponenten aufzubauen? Also Cpu, Bus, Speicher und
>> ein paar I/O-Bausteine?

Die bekommst du überhaupt nicht, das sind heute alles extrem 
hochintegrierte Chips mit 1000 und mehr Anschlüssen, die im Handel nicht 
erhältlich sind.

Du kannst zwar aus den alten Unterlagen zum XT/AT entnehmen, welche 
register eine Parallelschnittstelle im Prinzip hat, aber praktisch ist 
die heute in einem der Systemchips auf 0,01 % der Fläche mit 
untergebracht, sofern es sie überhaupt noch gibt.

Das kleinstmögliche Bauteil, das du beschaffen kannst, ist ein 
Motherboard.

Georg

von (prx) A. K. (prx)


Lesenswert?

Noch einer schrieb:
> Bei den heutigen Intel Prozessoren kannst du den Microcode ändern. Der
> Prozessor-Kern führt gar keine x86 Befehle aus. Die Maschinenbefehle
> werden von einem Microcode interpretiert, den du ändern kannst.

Änderbarer Microcode ist für Patches bei CPU-Bugs reserviert und recht 
wahrscheinlich nur bei jenen komplexen Befehlen machbar, die ohnehin 
schon per Microcode-ROM implementiert sind. In der dynamischen 
Befehlsveteilung sind das wenige Prozent der ausgeführten Befehle. Die 
anderen werden von den Dekodern direkt in Microops umgesetzt.

: Bearbeitet durch User
von Salewski (Gast)


Lesenswert?

Schoof schrieb:
> Gut, wenn es so kompliziert ist einen PC durch und durch zu kennen,
> kommt mir da eine andere Frage. Ist es dann einfacher einen Rechner
> selbst aus einzelnen komponenten aufzubauen? Also Cpu, Bus, Speicher und
> ein paar I/O-Bausteine? Quasi eine Art SPS.
> Gibts hierfür ein passendes Buch?

Wenn es Dir ernst ist, wäre vielleicht das aktuelle Oberon Projekt etwas 
für Dich. Ich habe das in den letzten Jahren nicht mehr verfolgt, aber 
Wirth hat jetzt wohl einen Rechner auf einem FPGA-Board implementiert, 
auf dem das in der Sprache Oberon gschriebene Oberon Betriebssystem 
läuft. Da hat man dann wirklich alles unter Kontrolle und kann 
prinzipiell alles verstehen. Die Einschränkungen und Nachteile liegen 
natürlich auf der Hand.

Wenn es Dir dagegen um ein minimales OS/Kernel geht: Jemand hat da in 
Nim einem bootbaren Kernel geschrieben.

von F. F. (foldi)


Lesenswert?

Dennis S. schrieb:
> Aber ob sich der Aufwand lohnt?

Gut dass Linus Torvalds sich das nicht gefragt hat.

von вег мит дем троль (Gast)


Lesenswert?

Wenn man etwas in Richtung eigener CPU machen wollte waere ein Design in 
einem FPGA eine Moeglichkeit. Nachteil : Es gibt sehr lange nichts 
anzufassen.

von R. F. (rfr)


Lesenswert?

Villeicht möchtest du dich mit V2OS auseinandersetzen.

Robert

von Hans E. (hans_e)


Lesenswert?

Für das Grundverständnis, was in einem PC vor sich geht, hat mir damals 
zu MS/PC-DOS 2.11(bzw.3.0)-Zeiten auch das anschauen des BIOS-Quellcodes 
des IBM-PCs geholfen. Der war Bestandteil des technischen 
Systemhandbuches der IBM-PCs. Ich konnte mir damals von einem an der Uni 
vorhandenen Exemplar eine Kopie machen.
Diese Doku war damals garantiert schweineteuer.
Ziemlich einfach dürfte da der Interrupt 17h und der Interrupt 10h sein.
Im Internet findet man das ganze mittlerweile unter 
http://www.intel-assembler.it/PORTALE/4/286bios_20090616.zip, wichtiger 
Kommentar dazu unter 
http://www.intel-assembler.it/portale/5/ibm-at-286-souce-code/ibm-at-286-souce-code.asp

: Bearbeitet durch User
von Malte S. (maltest)


Lesenswert?

Stefan U. schrieb:
> Nächste Hürde bei aktuellen Rechnern dürfte das UEFI Bios sein. Denn das
> will nur von Microsoft zertifizierte Software starten.

Du verwechselst UEFI im Allgemeinen mit dessen Feature Secure Boot.

Stefan U. schrieb:
> Ja, zumindest fast. Auf den Laptop meiner Frau musste ich zuerst ein
> Service-Tool von HP installieren, um den Legacy BIOS Modus
> freizuschalten. Bis dahin war der "Schalter" nämlich grau, als nicht
> veränderbar.

UEFI lässt sich auch ohne Legacy BIOS Mode und ohne BIOS Compatibility 
Mode mit abgeschalteten Secure Boot verwenden.

von Simon S. (-schumi-)


Lesenswert?

Schoof schrieb:
> Gut, wenn es so kompliziert ist einen PC durch und durch zu kennen,
> kommt mir da eine andere Frage. Ist es dann einfacher einen Rechner
> selbst aus einzelnen komponenten aufzubauen? Also Cpu, Bus, Speicher und
> ein paar I/O-Bausteine? Quasi eine Art SPS.
> Gibts hierfür ein passendes Buch?
>
> Wenn ich die Komponenten selbst aussuche, dann bestimme ich ja selbst
> die Komplexität des Rechnersystems. Und nein ich will keine fertige SPS
> kaufen, mich interessiert die Technik und das selber machen.

Als Mikrocontroller ist das garnicht mal so schwierig. Nimm dir einen 
Logiksimulator (z.B. Logisim), bau dir eine Schaltung damit und schreib 
dir nen Assembler dazu. Ist nicht x86 spezifisch oder so, aber die 
Prinzipien mit ALU, Registern, Stack, Ram, Rom, IO etc versteht man 
danach durch und durch.

Hab das auch selbst mal zum Spaß gemacht: 
https://hackaday.io/project/1228-another-microcontroller-built-in-logisim

Und dann noch die Erweiterung auf octa core, wobei nicht 8 einzelne 
threads ausgeführt werden, sondern 1 thread 8x so schnell: 
https://hackaday.io/project/4373-serial-multicore-mikrocontroller

Und wenns funktioniert kannst dus noch als Hardware aufbauen oder in nen 
Fpga packen

von res (Gast)


Lesenswert?

Schoof schrieb:
> Gut, wenn es so kompliziert ist einen PC durch und durch zu kennen,
> kommt mir da eine andere Frage. Ist es dann einfacher einen Rechner
> selbst aus einzelnen komponenten aufzubauen? Also Cpu, Bus, Speicher und
> ein paar I/O-Bausteine?

Wenn es Dir nur um das grundlegende Verständnis als intellektuelle 
Herausforderung geht, schau Dir doch mal "The Elements of Computing 
Systems, MIT Press, By Noam Nisan and Shimon Schocken" 
(http://www.nand2tetris.org) an.

von michi42 (Gast)


Lesenswert?

hast Du Dir das TempleOs inzwischen mal angesehen?
Unabhängig von den Überzeugungen des Erfinders ist das ähm sehr 
fundamental.

"""
TempleOS is an x86_64, multi-tasking, multi-cored, public domain, open 
source,
ring-0-only, single-address-map (identity-mapped), non-networked, PC 
operating
system for recreational programming.
"""
Alles Textmode, Grafik 640x480x16 - also eher ein Fan der C64 Idee. 
Spartanischer (und damit übersichticher) wird's nicht. 7MB 120k LOC sind 
noch zu Lebzeiten erforschbar, wenn auch teilw. spärlich kommentiert.

von Joachim B. (jar)


Lesenswert?

Georg schrieb:
> Falk S. schrieb:
>> selbst aus einzelnen komponenten aufzubauen? Also Cpu, Bus, Speicher und
>>> ein paar I/O-Bausteine?
>
> Die bekommst du überhaupt nicht, das sind heute alles extrem
> hochintegrierte Chips mit 1000 und mehr Anschlüssen, die im Handel nicht
> erhältlich sind.

Einspruch, wenn er wirklich mag gibt es das hier:

Joachim B. schrieb:
> leicher wäre doch ein Z80 CP/M single Board.
> http://www.pci-card.com/euro-z80.html

sonst kann er auch mit einem Arduino anfangen auch jenseits der Arduino 
IDE per AVR Studio

RAM "ROM" I/O alles in einem Chip, er könnte die ersten LED leuchten 
lassen, Tasten abfragen, sich in ISR IRQ und Timerprogrammierung 
einarbeiten und dann immer noch zum PI oder STM sich vorarbeiten, gleich 
mit einem 32-bitter und OS anzufangen halte ich für unmöglich.

Zwar war es leicht eine simple LED Ampel am PI zu machen, aber wenn es 
ums genaue Timing geht oder den PI am Port nicht abzuschiessen gehört 
schon etwas Erfahrung dazu.

: Bearbeitet durch User
von Georg (Gast)


Lesenswert?

Joachim B. schrieb:
> Einspruch, wenn er wirklich mag gibt es das hier:

Du hast natürlich recht, das man daraus was lernen könnte, aber:

schoof schrieb:
> ich möchte mich mit der Programmierung von PCs
> beschäftigen, allerdings auf unterster Ebene

hast du wohl überlesen. Ein PC hat alles mögliche, aber keine Z80-CPU.

Georg

von Joachim B. (jar)


Lesenswert?

Georg schrieb:
> hast du wohl überlesen. Ein PC hat alles mögliche, aber keine Z80-CPU.

PC heist personal computer und aus Z80 kann man erst mal CP/M machen 
danach zu DOS kommen.

https://de.wikipedia.org/wiki/CP/M

Ich wüsste nicht warum ein Compi mit Z80 kein PC sein sollte, das waren 
die ersten noch vor dem "PC" (genauso mit 6502).

von Andreas R. (daybyter)


Lesenswert?

Hier im Forum gibt es doch einen Thread über das z180 Modul.

Alternativ gab es in der c't mal eine Serie über die x86 Chips wie 
Keyboard-Controller usw. Auch einen x86 Einplatinencomputer gab es da.

von Stefan F. (Gast)


Lesenswert?

> Ist es dann einfacher einen Rechner
> selbst aus einzelnen Komponenten aufzubauen?

Einen PC kannst du nicht nachbauen, denn die Chips kannst du nicht 
kaufen und die Datenblätter sind nicht zugänglich. Dann kommt noch dazu, 
dass einige Chips ohne Firmware nicht funktionsfähig sind. Auch die 
brauchst du.

Einen funktionierenden Rechner kann man sich jedoch bauen. Dazu suchst 
du Dir eine CPU aus, und dann die ganze Peripherie, die zu dessen 
Betrieb nötig ist.

Nur würdest du dich dann mit veraltetem Kram beschäftigen. Aktuelle 
Entwicklungen basieren stets entweder auf einem PC oder einem 
Mikrocontroller.

von Stefan F. (Gast)


Lesenswert?

> Ich wüsste nicht warum ein Compi mit Z80 kein PC sein sollte

Sie waren PC's im Sinne von "Personal Computer". Wer heute das Wort PC 
meint, denkt dabei allerdings eher an einen Rechner mit aktuellem Intel 
Prozessor, so Windows drauf laufen kann.

von R. W. (Gast)


Lesenswert?

hi

empfehle dir als erste grundlage

MS-DOS, PC-DOS, MS-Windows, PC, PS/2 Hardware

Thom Hogan:

https://www.rebuy.de/i,2892166/buecher/die-pc-referenz-fuer-programmierer-thom-hogan

an den grundlagen hat sich nicht viel geändert.

nächster schritt,
welche cpu / schnittstellen interessieren dich?
welche richtung soll es gehen? windows, linux, andere?

lg
;-)

von R. W. (Gast)


Angehängte Dateien:

Lesenswert?

Joachim B. schrieb:
> PC heist personal computer und aus Z80 kann man erst mal CP/M machen
> danach zu DOS kommen.
>
> https://de.wikipedia.org/wiki/CP/M

über CP/M schrieb Thom Hogan einen bestseller mit über 300.000 
exemplare, "CP/M Users Guide". wenn du noch mehr grundlagen brauchst,
dann leg dir auch dieses buch zu:

http://www.goodreads.com/book/show/4963357-cp-m-user-s-guide

oder mal hier gucken:


eine ganze bücherliste und links dazu

http://www.himpdf.org/ahzvo_the-osborne-mcgraw-hill-cp-m-user-guide-by-hogan-thom.pdf

oder hier:

http://www.amazon.com/Osborne-CP-M-user-guide/dp/0931988829

thom hogan ist ein veteran.
mehr über ihn:

http://www.bythom.com/thom.htm


lg ;-)

bild src: http://www.bythom.com/thom.htm

von Schoof (Gast)


Lesenswert?

- OS Empfehlungen
- Buchempfehlungen
- Webseiten mit Tutorials
- Persönliche Empfehlungen bzgl. Mikrocontrollern, großen Rechnern, RPI 
etc.
- Simulationstool
...ich hoffe, dass ich niemanden vergessen habe zu erwähnen.

Ich kann mich gar nicht genug bei allen hier bedanken für die vielen 
Beiträge, für mich ist dieser Thread eine wahre Fundgrube an 
Informationen. Nachdem ich alles mitgelesen habe, steht für mich eines 
fest:
Ich fange lieber einfach an, d. h. ich beschäftige mich zuerst mit
Mikrocontrollern, wenn ich mind. die Grundlagen beherrsche, kann ich 
mich daran wagen ein kleines Grafikdisplay, Maus und Tastatur an einen 
leistungsstärkeren Mikrocontroller anzuschließen und dafür ein 
primitives OS zu schreiben. Das ist fürs erste vom Umfang her sicher 
mehr als genug.

Mit Logisim werde ich mich wohl auch beschäftigen, das sieht sehr 
spannend aus (danke Simon S.) und hat den Vorteil, dass ich mich nicht 
bestimmten Architekturen beschäftige, sondern lerne Logikschaltungen zu 
entwerfen unabhängig von einer Architektur (ich hoffe, dass ich das 
richtig verstanden habe).

Die größeren OS wie Temple, V2, müssen leider warten. 120k Codezeilen 
sind doch etwas arg viel fürs erste. Installieren kann ich sie zum Test 
aber dennoch mal.

von Joachim B. (jar)


Lesenswert?

Schoof schrieb:
> 120k Codezeilen
> sind doch etwas arg viel fürs erste.

bei früher 50 Zeilen für geübte Programmierer ist es heute von einem 
kaum noch zu stemmen. Da stecken Mannjahre drin!

Schoof schrieb:
> Ich fange lieber einfach an, d. h. ich beschäftige mich zuerst mit
> Mikrocontrollern, wenn ich mind. die Grundlagen beherrsche, kann ich
> mich daran wagen ein kleines Grafikdisplay, Maus und Tastatur

da bietet sich ein Arduino mega2560 an mit aufgestecktem GC Display
http://www.exp-tech.de/adafruit-2-8-tft-touch-shield-fuer-arduino-v2?gclid=CNiN3YOYo8cCFefItAodm6kOvQ

steckt man 1:1 auf und es kann losgehen

über RS232 könnte erst mal mit
http://www.ebay.com/bhp/rs232-ttl-max3232
eine alte RS232 Maus anstecken

mit USB würde ich gerade nicht einsteigen

eine alte PC Tastatur mit 5-pol DIN Schnittstelle ist 5V seriell auch 
das würde gehen
http://www.ebay.de/itm/like/351393001370?lpid=106&chn=ps

von Schoof (Gast)


Lesenswert?

Gut zu wissen, danke für die Hinweise.

von Georg (Gast)


Lesenswert?

Schoof schrieb:
> 120k Codezeilen
> sind doch etwas arg viel fürs erste.

So musst du auch die Empfehlungen hier für Linux sehen: es ging gerade 
durch die Presse, dass der Kernel die 20 Millionen Codezeilen 
überschritten hat. Und das ist nur der nackte Kernel, da kommen noch 
hunderte Millionen dazu, um das System real benutzen zu können. Wenn du 
da auch nur eine Minute pro Codezeile rechnest...

Georg

von Schoof (Gast)


Lesenswert?

Georg schrieb:
> Wenn du
> da auch nur eine Minute pro Codezeile rechnest...

Ja, mir persönlich ist der Nutzen/Aufwand da doch zu groß.

von Josef G. (bome) Benutzerseite


Lesenswert?

Schoof schrieb:
> Ich fange lieber einfach an,

Schau dir das mal an: http://www.bomerenzprojekt.de

von Schoof (Gast)


Lesenswert?

Josef G. schrieb:
> Schau dir das mal an: http://www.bomerenzprojekt.de

Das sieht auch interessant aus, kann ich mir für später aufheben!

von AH (Gast)


Lesenswert?

Man kann sich (grundlegende) Programmiertechniken ganz gut selber 
erarbeiten, indem man sich verfügbare Sourcecodes (auch in C, OO C, oder 
Pascal) anschaut.
64 Bit Programmierung ist nicht sehr viel anderes als 16 Bit 
Programmierung, nur eben mit ein paar Änderungen.
Was man auch noch braucht, wäre das ein oder andere (aktuell verfügbare) 
Buch zum Nachschlagen.
(und die wichtigsten Systemfunktionen des Zielsystems.)
(nur ein Beispiel von vielen: http://flatassembler.net/examples.php )
(und: auch in Assembler ließe sich Skript-Kiddie-Kultur-Extrem und Code 
Obfuscation bis zum Erbrechen betreiben)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.