Kann man im Binärcode programme schreiben?

7 Antworten

Ich habe früher rein im Hexeditor programmiert. Aber nur aus Jux und Dallerei, da man dabei mit den Adressen schnell durcheinander kommt, und für ernsthaftes Programmieren ist Assembler einfach komfortabler.

Ich gucke mir aber oft Binärcode an, und den muss ich oftmals gar nicht mehr disassemblieren, um ihn zu verstehen. Wenn da "31 C0", "50" oder "83 EF 01" steht, dann ist meistens völlig klar, was der Programmteil da eigentlich gerade tut.

Ich muss aber zugeben, dass mir das nur bei x86, x64 und ARM gelingt, auch wenn ich des Öfteren an anderen Plattformen, Microcontrollern und embedded Systemen arbeite. Da ich jedoch mit den erst genannten Drei am häufigsten in Kontakt komme, übt das dann natürlich am meisten.

Und um auf deine Frage zurück zu kommen: Ob ein Byte jetzt in Hex oder Binär dargestellt wird, ändern ja am eigentlich Wert nichts. Allerdings ist Hex für Menschen um Längen besser lesbar. Die meisten Hex-Editoren lassen sich zwar auch auf eine rein binäre Darstellung umstellen, aber eigentlich benötige ich dieses Feature nie.

Also ja: Ich glaube, dass ich sehr einfache Progrämmchen wie "Hello World" oder ein einfaches Additionsprogramm auch rein binär hinbekommen würde. Aber evtl. nicht beim ersten Versuch und schon gar keine umfangreicheren Programme.

Mit einem Hexeditor hingegen würde ich es bestimmt auch beim ersten Versuch schaffen, aber rein binär möchte ich wetten, dass sich da sofort Flüchtigkeitsfehler einschleichen ... nur Null und Eins ist einfach zu einseitig für mein Gehirn. :)

Auf jeden Fall ist es für einige Aufgaben sehr hilfreich, Maschinencode in Hex-Form lesen zu können (vor allem ARM ist hier wesentlich einfacher als x86 oder x64), aber erstens braucht das kaum jemand, und zweitens ziehe ich C, C++, C#, Java, Python, Ruby, Bash, etc. dann doch vor.

Wenn man es aber wirklich drauf anlegt, und sich ein paar Tage bis Wochen intensiv auf einen Binär-Programmier-Wettbewerb vorbereiten würde, gibt es sicherlich viele Leute, die das könnten. Für jemanden, der Assembler kann, ist das dann eigentlich nur noch eine Fleißarbeit ... eine ziemlich sinnlose Fleißarbeit. :)

Klar kannst du das, im Grunde sind Befehle in C++ nichts anderes als 0 und 1. natürlich ist es viel einfacher so zu programmieren als mit 0 und 1 da jeder Befehl auf den ersten Blick für uns eine total sinnlose Folge von 0 und 1 ist.

klar.  alle befehle die der prozessor versteht sind mit bestimmten 8-bit codes codiert. jeder der reservierten 8-bit befehlscode verwendet dann die entsprechenden nachfolgenden byte oder bytes als daten.  (kann natürlich bei anderen prozessorgenerationen auch 16-bit codes usw. sein, normal aber 8-bit = 1 Byte je code).

Kann man wohl kaum, denn für reinen Binärcode gibt es keinen Interpreter. Assemblercode ist maschinenlesbar, wenn man den Befehlssatz der CPU beachtet. Binärcode wäre eine irrsinnige Anhäufung von Nullen und Einsen, die für jedes Bit einzeln geschrieben werden müßten.

ceevee  05.03.2016, 18:05

Assemblercode ist doch nicht maschinenlesbar. Ein Computer kennt nur 0 und 1, mit Assembler-Mnemonics wie "MOV" kann der nix anfangen.

1

Doch, aber Assembler ist fast das gleiche. :)

Wenn man mal das Wikipedia-Beispiel aufgreift, dann entspricht 10110000 01100001 dem Assembler-Befehl "mov al, 61h".

https://de.wikipedia.org/wiki/Assemblersprache#Beschreibung

Programmieren kannst du das in jedem beliebigen Binäreditor. Compiler von höheren Sprachen übersetzen einfach z.B. einen C-Befehl in mehrere Assembler-Befehle bzw. in Binärcode.