Programmierung mit reinem Binärcode

Von: , Frage gestellt am Mo, 15. Okt 2007

Hallo zusammen,

wollte mal wissen, ob es heute noch möglich ist in eine Datei einen Binärcode zu schreiben (also rein 0 und 1) und dann diesen als Programm auszuführen?
Also ein Programm ohne Compiler oder Interpreter zu schreiben?


Wenn nicht, kann man dann wenigstens mit einem speziellen Editor eine exe-Datei öffnen und diesen Binärcode ansehen?

THX

12 Antworten zu dieser Frage

  1. Antwort von nach 23 Minuten 0 hilfreich
    Re: Programmierung mit reinem Binärcode

    Hallo Fragewurm,
    wollte mal wissen, ob es heute noch möglich ist in eine Datei
    einen Binärcode zu schreiben (also rein 0 und 1) und dann
    diesen als Programm auszuführen?
    Also ein Programm ohne Compiler oder Interpreter zu schreiben?
    Wieso sollte das nicht gehen ?
    Alles was ein Compiler oder Assembler kann, kann ich schon lange (1976 musste ich noch meine Programme für den KIM-1 [CPU 6502] von Hand schreiben, dann Kodieren und die HEX-Werte eintippen. Danach konnte man das Programm auf einem Kassettenrecorder abspeichern).
    Wenn man heute einen Assembler, Compiler oder sonstigen Codegerator selber schreibt, muss man dann auch von Hand kontrollieren ob die Befehle richtig codiert werden.

    Man benötigt aber, neben den Unterlagen zu CPU und Betriebssystem, noch einen (HEX)-Editor um die Daten auf die Platte zu bekommen. Wenn nicht, kann man dann wenigstens mit einem speziellen
    Editor eine exe-Datei öffnen und diesen Binärcode ansehen?
    Ja, nennt sich allgemein Disassembler. Gibt es als eigenständige Programme oder ist Bestandteil der meisten Debugger.

    MfG Peter(TOO)

    • Antwort von nach 14 Stunden 0 hilfreich
      Re^2: Programmierung mit reinem Binärcode

      Als kleinen Tip hinterher:
      nullen und einsen wirste auch mit dem dissassembliertem code nicht finden,
      das niedrigste was du sehen wirst sind hexadezimale Ziffern (1-9,A-F) diese können, je nach dissassemblierungsrad, in die einzelnen CPU-Befehle übersetzt werden (also die ganzen MOVs, und JMPs usw.)

      Sagt dirdas alles nichts such dir ein Buch/Webseite über Assembler-sprachen raus ;)

      • Antwort von nach 15 Stunden 0 hilfreich
        Re^3: Programmierung mit reinem Binärcode

        Hallo Fragewurm, Als kleinen Tip hinterher:
        nullen und einsen wirste auch mit dem dissassembliertem code
        nicht finden,
        das niedrigste was du sehen wirst sind hexadezimale Ziffern
        (1-9,A-F) diese können, je nach dissassemblierungsrad, in die
        einzelnen CPU-Befehle übersetzt werden (also die ganzen MOVs,
        und JMPs usw.)
        Das ist Übungssache.
        Nach über 30 Jahren "sehe" ich auch bei HEX-Ziffern die Bitkombinationen ;-) Sagt dirdas alles nichts such dir ein Buch/Webseite über
        Assembler-sprachen raus ;)
        MIR musst du das nicht erklären ;-)

        MfG Peter(TOO)

        • Antwort von nach einem Tag 0 hilfreich
          Re^4: Programmierung mit reinem Binärcode

          MIR musst du das nicht erklären ;-)

          MfG Peter(TOO)
          Sorry *G*
          Meinte auchned dich sondern den dem du geantwortet hast ;)

          MfG
          Quin

          • Antwort von nach 2 Tagen 0 hilfreich
            Danke!

            Dann bedanke ich mich für die ausführlichen Antworten.

            Ist ja schon erstaunlich, was ein Compiler bzw. Interpreter eigentlich alles leisten muss.

    • Antwort von nach einem Tag 0 hilfreich
      Re^2: Programmierung mit reinem Binärcode

      C64 6510 Code:

      00 C0 A2 00 BD 0E C0 20 D2 FF E8 E0 0B D0 F5 60 4A 41 4A 41 20 53 4F 20 47 49 4E 47 20 44 41 54 20 44 41 4D 41 4C 53 20 3B 2D 29 20 4C 47 20 41 4C 45 58

      LG Alex

  2. Antwort von nach 14 Stunden 0 hilfreich
    Re: Programmierung mit reinem Binärcode

    Hallo,

    null problemo, wenn du das Wort Datei in dem Zusammenhang weglässt - das setzt schon unglaublich viel voraus wie ein Dateisystem auf einem Datenträger und ein Betriebssystem, das diese Datei einliest und reloziert. Eine Exe-Datei ist keineswegs einfach Binärcode für 80x86-Prozessoren (d.h. nur zum Teil).

    Du kannst aber den Binärcode in ein Eprom brennen und das an den Prozessorbus anschliessen. So geht das z.B. beim BIOS, da existiert ja noch kein Betriebssystem. Voraussetzung ist, dass das Eprom an Adresse 0 anfängt, da springt der Prozessor beim Reset hin.

    Allerdings musst du alle Adressen selbst ausrechnen, z.B. bei einem relativen Sprung die übersprungenen Bytes abzählen und beim Sprungbefehl einrechnen. Wenn man das eine Weile macht, kann man hexadezimal kopfrechnen. In den Urzeiten, bevor es Assembler gab, habe ich zu dem Zweck sogar eigene Formulare drucken lassen.

    Gruss Reinhard [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

    • Antwort von nach 15 Stunden 0 hilfreich
      Re^2: Programmierung mit reinem Binärcode

      Hallo Reinhard,
      Du kannst aber den Binärcode in ein Eprom brennen und das an
      den Prozessorbus anschliessen. So geht das z.B. beim BIOS, da
      existiert ja noch kein Betriebssystem. Voraussetzung ist, dass
      das Eprom an Adresse 0 anfängt, da springt der Prozessor beim
      Reset hin.
      Das stimmt so nicht.
      Leider ist das bei den X86-CPUs genau anders. Hier muss das ROM oben im Speicher liegen.
      Manche Prozessoren arbeiten zudem mit einem Reset-Vektor über welchen der PC gesetzt wird, andere setzen den PC auf einen bestimmten Wert und fangen dort mit der Abarbeitung des Codes an.

      MfG Peter(TOO)

      • Antwort von nach einem Tag 0 hilfreich
        Re^3: Programmierung mit reinem Binärcode

        Das stimmt so nicht.
        Leider ist das bei den X86-CPUs genau anders. Hier muss das
        ROM oben im Speicher liegen.
        Hallo,

        da hast du recht, ich hab wohl schon ewig keine x86-Hardware mehr entworfen oder analysiert.

        Mit dem "leider" hast du auch recht, ich weiss bis heute nicht, wozu das gut sein soll. Immerhin besteht Hoffnung: es sind die letzten 16 Bytes vorgesehen, bei der 128-bit-Generation kann man also keinen Jump mehr unterbringen und braucht ein neues Reset-Konzept. Geschieht Intel recht, an Adresse 0 gäbe es das Problem so nicht. Ich habs eben schon immer besser gewusst!

        Gruss Reinhard



Keine passende Antwort gefunden? Jetzt eigene Frage stellen!