Hi !!
Gibt es hier Leute, die mir sagen können, ob ich das mit dem Computer jetzt endlich richtig verstanden habe ????
Also, der CPU versteht nur Maschinensprache nach Bits und Bytes geordnet. So ungefähr
00101100 10101110 10111111 10111011
01101110 10100001 10010111 01110100
( beliebige Reihenfolge gewählt )
Acht Bit sind ein Byte, ....
Was bedeuten diese Bits und Bytes ??
Na mit 8 Bit lassen sich 256 verschiedene Zeichen darstellen.
Dabei werden die Standards ANSI und ASCII benutzt.
Wandelt man nun diese Bits in Zeichen um, so erhält man Befehle, die der jeweilige Prozessor ( MAC, Intel oder AMD ) versteht, den internen Befehlssatz. Diese Befehle stellen nun den Befehlssatz gemäß Assembler dar ( etwas komplizierte Programmiersprache ) .Um das ganze etwas verständlicher zu machen, wurden die höheren Programmiersprachen entwickelt. u.a. C/C++ und Pascal. Hat man nun ein Programm z.B. in C++ verfaßt, dann muß man es noch kompilieren ( also in o.a. Maschinencode, bestehend aus 01010101, umwandeln ).
Ein Programm, das erst zur Laufzeit kompliert wird ( z.B. Basic ) bleibt im Klartext, bzw. Quelltext stehen. Man sagt auch es wird zur Laufzeit erst interpretiert.
Meine Fragen:
Stimmt das soweit ???
Wo bekomme ich denn den internen Befehlssatz für einen Intel CPU her ???
( hab mich auch noch nícht weiter darum bemüht )
Woher bekomme ich die ANSI und ASCII Zeichensätze her ??? Gibt es da auch ne Liste, die die dazugehörigen Bytes angibt und Heyadezimal und ... ???
CU Pomm
Programmieren - alles kontrollieren 4.939 Themen, 20.672 Beiträge
Hi Pomm!
Deine einfache Betrachtung zu Bits&Bytes und Madchinensprache ist richtig.
Einige Hinweise noch (die zeigen, wie komplex das ganze ist):
Ob eine Byte-Folge im Arbeitsspeicher ein Stück Programmcode, eine Text oder Teil einer Bildinformation ist, weiss die CPU normalerweise nicht. Sie wird auch versuchen die Bildinformation als Programm auszuführen.
Frühre führte sowas dann direkt ins Nirvana: Absturz. Heute kann man der CPU per Programmanweisung mitteilen, welche Bereiche wie genutzt werden (die Speicherbereiche werden dabei in Pages/Seiten unterteilt). Wenn dann z.B. ein Programm in Seite schreiben will, die nicht beschrieben werden darf, dann löst die CPU einen Fehler aus. In Windows ist das dann der bekannte "Page Fault" bzw. "Seitenfehler/Schwerer Ausnahmefehler".
Das erklärt, was diese Fehler bedeuten und leider auch, dass man aus der Fehlermeldung nicht sehen kann, was genau schief gelaufen ist...
Neben den Compilern und den Interpretern gibt es noch eine Zwitterlösung. Programmiersprachen, die mit P-Code arbeiten. Sie verwenden auch einen Compiler, nur erzeugt der keinen Maschinencode, sondern einen "Zwischencode", den P-Code.
Der P-Code muss dann von einem P-Code-Interpreter ausgeführt werden. Oft spricht man dann von einer notwendigen "Laufzeitumgebung", die notwendig ist, um den P-Code auszuführen.
Der P-Code kann schneller ausgeführt werden, als ein "Voll-Interpretierte" Sprache, aber langsamer als echter Maschinencode. Der Vorteil ist aber, dass man nur den P-Code-Interpreter für eine neue CPU umsetzen muss und dann alle vorhanden P-Code-Programme ausführen kann (man muss sie nicht neu compilieren). Das ist "der Trick", der hinter Java steht (und ist eigentlich ein alter Hut...).
Wenn du mit Windows arbeitest, findest du in der Zubehör-Gruppe die Zeichensatztabelle. Da Windows mit dem ANSI-Zeichensatz arbeitet, ist das eine ANSI-Tabelle. (Falls sie fehlt, kann man sie nachinstallieren!)
Leider gibt es keine "Stand-ASCI-Tabelle", die als Tool mitgeliefert wird. Selbst unter DOS stand sie früher nur im Handbuch (bis Version 5).
Eine Online-Tabelle zu finden, war gar nicht so einfach. Die MetaGer-Suchmaschine (http://meta.rrzn.uni-hannover.de/) hat dann allerdings etwas gefunden, mit dem ich nicht gerechnet hatte:
www.ascii-tabelle.de
Die Seite gibt's wirklich. :-) Sie beschreibt aber nur den echten ASCII-Zeichensatz, der nur 127 Zeichen kennt!
Die IBM-ASCI-Tabelle gibt's dann hier:
http://home.t-online.de/home/dynamo/ascii/ascii0.htm
Ich hoffe, das hilft dir weiter!
Bis denn
Andreas