Mit Maschinencode Programmieren

Marschel7373

PC-Selbstbauer(in)
Warum ist der Maschinencode so komplex ?
Wie kann man Spiele mit dem Maschinencode Programmirern ?
Gibt es Bücher über den Maschinencode?
Was kann man alles mit dem Maschinencode Programmieren ?
Worauf Programmiert man den Mashinencode ?
 
Warum ist der Maschinencode so komplex ?
Wie kann man Spiele mit dem Maschinencode Programmirern ?
Gibt es Bücher über den Maschinencode?
Was kann man alles mit dem Maschinencode Programmieren ?
Worauf Programmiert man den Mashinencode ?

1. Weil er für maschinen gemacht ist ;) stell dir vor du willst eine neue sprache lernen mit einer komplett irrationalen grammatik.

2.Gar nicht

3. Theoretisch alles aber man nimmt lieber höhere sprachen oder assembler

4. Eigentlich ja garnicht aber man kann ihn im editor verändern
 
Im Prinzip ist Assembler sehr nahe am Maschinencode, es ist bur etwas besser lesbar. Allerdings lohnt es sich in den meisten Fällen nicht. Selbst bei der alten 8051 Familie ist meist C zu bevorzugen.
 
Du scheinst nicht sehr viel ahnung von programmierung zu haben ? :D
Nicht böse gemeint aber googke doch mal was dich interessiert und schlag dir das mit dem spiel aus dem kopf ^^ "hello world" ist das ziel
 
Könnte man denn mit den 1 und 0 Wörter schreiben ?
Klar, aber das macht niemand von Hand.

Wenn du wirklich was in 1 und 0 programmieren willst, blickst du ruck zuck absolut gar nix mehr durch.
Das macht wirklich niemand. Deshalb hat man Assembler erfunden und auch damit wird kaum noch was programmiert.

Den Befehlssatz (Assembler) findest du meistens irgendwo in PDFs des Herstellers.



EDIT:
Hab n kleines Beispiel in den Tiefen meiner HDD gefunden. :ugly:
Ist ein winziges Programm, dass eigentlich nur einen Ausgang (LED) in Abhängigkeit eines Eingangs (Schalter) ein und aus schaltet.
Afaik für den 8051.

Als C Programm:
Code:
sfr schalter = 0xF8; //P5
sbit schalter0 = schalter^0;
sfr LED = 0xE8;    //P4
sbit LED0 = LED^0;

#include <reg517.h>
main(){
    while (1)  {
        if (schalter0) {
            LED0 = 0;
        }else LED0 = 1;
    }
}
Das ganze in Assembler:
Code:
S0 BIT 0xF8
LED0 BIT 0xE8

ORG 0000h
loop:    JB S0, weiter
        SETB LED0
        JMP loop

weiter: CLR LED0
        JMP loop

END
Und dann noch hexadezimal (Intel HEX-Format):
Code:
:0B080C0030F804C2E880F9D2E880F563
:03000000020800F3
:0C080000787FE4F6D8FD75810702080C33
:00000001FF
Jetzt stell dir noch vor, du "zerlegst" jeden dieser Buchstaben noch in vier 1en und 0en.


Verstehst du jetzt, wieso das keiner macht? :D
 
Zuletzt bearbeitet:
Wow, nettes Beispiel.

Da könnte man ja ganz neue Nerd-Langzeit-Grübelaufgaben machen.

"Gegeben ist
0B080C0030F804C2E880F9D2E880F56303000000020800F30C080000787FE4F6D8FD75810702080C3300000001FF
was passiert?"

Oder für die ganz harten die Pro-Version in Binärcode:
"00001011000010000000110000000000001100001111100000000100110000101110100010000000111110011101001011101000100000001111100111010010111010001000000011110101011000110000000000000000000000000000000000001000001000000000001111001100001100000010000000000000000000111100001111111111001001111011011011000111111010111010011110000111111111100100111101101101100011111101011101000000000000000000000000000000111111111"



...und ja, ich hab das grade wirklich umgewandelt... wollts einfach sehen :ugly:
:haha:
 
Zuletzt bearbeitet:
Das gabs bei uns in den 70er Jahren anscheinend auch noch zur Maschinenbedienung bei automatisierten Zugprüfmaschinen wenn man den Bildern und Berichten der Kollegen glauben kann. Da gabs dann für verschiedene Programme/Proben eben entsprechende Lochkarten die man der Maschine geben musste damit sie weiß wie gezogen werden muss.

Irgendjemand musste diese Karten ja auch herstellen... und da die Programmeinstellungen von uns vorgenommen werden/wurden gabs vermutlich auch einen armen Menschen der das in 0 und 1 umwandelte und nachts vom Locher träumte.
 
Warum ist der Maschinencode so komplex ?
Wie kann man Spiele mit dem Maschinencode Programmirern ?
Gibt es Bücher über den Maschinencode?
Was kann man alles mit dem Maschinencode Programmieren ?
Worauf Programmiert man den Mashinencode ?

1. Weil er für maschinen gemacht ist ;) stell dir vor du willst eine neue sprache lernen mit einer komplett irrationalen grammatik.

2.Gar nicht

3. Theoretisch alles aber man nimmt lieber höhere sprachen oder assembler

4. Eigentlich ja garnicht aber man kann ihn im editor verändern
1. Ein PC ist auch eine Maschine ;)
2. Geht sehr wohl.
Ja, es gibt Bücher.
3. Na, da widersprichst Du Dir ja selbst bei 2.
4. Auf einem x-beliebigen Editor...Du mußt dann nur noch den Code auf die Maschine bekommen...
 
Oh doch !;) Ist zwar nicht ganz das selbe, aber ich habe noch Programme mittels Lochstreifen und -karten "gestanzt".:D
Ich meinte macht niemand mehr freiwillig.
Das man das in grauer Vorzeit mal machen musste, weiß ich auch. Dann gabs Assembler und dann die Hochsprachen.


Das gabs bei uns in den 70er Jahren anscheinend auch noch zur Maschinenbedienung bei automatisierten Zugprüfmaschinen wenn man den Bildern und Berichten der Kollegen glauben kann. Da gabs dann für verschiedene Programme/Proben eben entsprechende Lochkarten die man der Maschine geben musste damit sie weiß wie gezogen werden muss.

Irgendjemand musste diese Karten ja auch herstellen... und da die Programmeinstellungen von uns vorgenommen werden/wurden gabs vermutlich auch einen armen Menschen der das in 0 und 1 umwandelte und nachts vom Locher träumte.
Sowas hat mein ehemaliger Chemielehrer auch erzählt. Debuggen muss die Hölle gewesen sein.
Er meinte: "Zuhause die Karten machen, in die Uni latschen, (da gabs den einzigen Rechner) Karte reinstecken, geht nicht. :ugly: Also wieder heimlatschen, gucken wo klemmts, neue Karte machen, wieder hinlatschen....."
 
hmm, du bist allein auf einer (sehr sehr großen ^^) insel und sollst ein atomkraftwerk bauen. geht das? sicher ^^ aber einfach is was anderes ;)

- du musst irgendwie erstmal was zum feuer machen suchen
- du brauchst nahrung
- du musst irgendwie metallhaltige erze ausbuddeln
- feuer und erze ergeben dann eventuell mal irgendwann eisen
- damit kannst du dann bessere werkzeuge bauen (assembler? ^^)
- mit denen kannst du besser jagen und an weiteres erz kommen
- deine erzverhüttung kannst du damit aufpolieren
- du gewinnst schneller und besser erze
- du suchst auch noch nach sand und krams für beton
- du bastelst dir nen bleianzug (vorsorglich :ugly: ) und baust irgendwann uran ab usw usf...

also sowas wie assembler und hochsprachen wie c usw sind auch nix andres als ne lebensvereinfachung. prinzipiell ist es möglich im maschinencode zu schreiben. wäre das nicht möglich, würde kein computer funktionieren ^^ die höheren programmiersprachen lassen einen die elemente der tieferen nur einfach besser verwenden. in logikgattern und registern und dem ganzen kram werden die 1 und 0 gespeichert, verarbeitet und hin und hergeschoben. einfachste programme lassen sich locker noch im maschinencode händisch bauen. additionen oder so würd ich mal als bsp. anführen, aber da gibts sicher leute, die das besser wissen >< ich beschreib das auch nur aus ner sehr diffusen sichtweise ^^ dann kommt assambler und nutzt solche "komplexen" maschinencode teile und fügt vllt verschiedene davon zu einer einzigen funktion zusammen. in assambler kann man nun mit einem befehl ganze heerscharen an maschinencode befehlen auslösen. und c usw? die nutzen wiederrum assambler als grundlage (also ich glaubs ^^ 100% sicher bin ich mir ned grad *hust*) und basteln aus den assambler befehlen wieder lustige easy-to-use funktionen. die vorteile jedes abstraktionsschrittes ist dann eben, dass sich die lesbarkeit erhöht.

hier sieht mans schön: Maschinensprache
maschinencode in hex: C7 45 FC 02 -> bitte was? ^^
assambler: mov DWORD PTR [rbp-4], 2 -> könnte man schon erahnen. irgendeine speicherbelegung. dieser pointer PTR wird irgendwie mit dem DWORD wert 2 belegt oder so.
und dann in c: int a = 2; -> ahhh ^^ einer variablen wird der wert 2 zugeordnet.

macht alles das selbe, aber wieso sollte man im urschlamm wühlen, wenn sich generationen schlauer leute die köpfe zerbrochen haben, wie man es einfacher hinbekommt? :P oder zündest du dir die zigarette auch mit 2 feuersteinen an, die du aneinander schlägst? ^^
 
Auch wenn ich deine Smiley-behaftete Schreibweise manchmal merkwürdig finde, ist der Text recht neat. Das Beispiel passt gut.
Dein PC arbeitet Maschinencode ab sobald er angeschaltet wird. Du kannst also auch direkt Maschinencode programmieren und die Maschine das abarbeiten lassen. Aber wie hier schon gut gezeigt wurde, ist das eine ziemlich müßige Arbeit und genau dafür wurden Hochsprachen entwickelt. Die Hochsprachen können nicht direkt ausgeführt werden (weil der PC dumm ist und Hochsprachen nicht versteht), sondern die Hochsprachen müssen erst "compiliert" werden. Und Compilieren ist einfach nur der Vorgang, in dem Hochsprachen zu Maschinencode verarbeitet werden.

Und zu deiner "also ich glaubs": Ja "C nutzt Assembler". Also... more or less. Wie gesagt, alle Hochsprachen compilieren zu Maschinencode (oder Bytecode bei JIT Compilern wie Java (egal, ignorieren)). Und Assembler ist ja quasi nur eine Pseudosprache, die nur schöne Labels für HexCodes hat. Meist nutzen Compiler intern noch etwas andere Datenstrukturen, die dann im letzten Schritt zum Maschinencode synthetisiert werden. Compiler sind eh eine Sache für sich ;)

Und @Incedible Alk: Welche Architektur ist das denn? Ohne die Info können wir nur raten ;)
 
Es gibt heute praktisch keinen Grund mehr manuell in Maschinensprache zu programmieren. Wenn man in Assambler programmiert gibt es auch keine "semantische Lücke", im Vergleich zur Maschinensprache hat man eigentlich nur Vorteile.

In Maschinensprache programmieren ist nur sinnvoll wenn man einen Speicher manuell beschreiben will, etwa wenn man eine Lochkarte manuell stanzen will oder wenn man eine diskrete Diodenmatrix manuell verdrahten will aber das hat man vielleicht 1950 gemacht (in einigen Fällen vielleicht auch noch 10 oder 20 Jahre später), heute ist das aber völlig obsolet.

Wenn du ohne einen vorhandenen Computer zu verwenden einen Computer bauen wollen würdest dann würdest du an einer gewissen Stelle nicht darum herumkommen diesen manuell in Maschinensprache zu programmieren aber na ja...

hmm, du bist allein auf einer (sehr sehr großen ^^) insel und sollst ein atomkraftwerk bauen. geht das? sicher ^^ aber einfach is was anderes

Hm... Industrialcraft :D
 
Zurück