Autor |
Beitrag |
K.S.M. 
      
Beiträge: 82
Windows 7 Professional
Delphi 2010, HTML, JavaScript, CSS, PHP, ein wenig C, Flash ActionScript 2.0/3.0, SQL, Assembler
|
Verfasst: Mo 04.08.08 22:31
Ok, aber wie schreibt man denn eine COM-Datei? Offensichtlich ja direkt mit Assemblern, zumindest habe ich es so bei Wikipedia ( de.wikipedia.org/wiki/COM-Datei) verstanden. Ich kenn mich nur mit ASM nicht SO gut aus, das ich eine Konsole öffnen, Text anzeigen und die Konsole wieder schließen kann. (für ein Testprojekt.) Weiß vielleicht jemand, wie man das macht?
// EDIT: falscher Wiki-Link 
_________________ "Programmieren ist keine Kunst. Programmieren ist eine Fähigkeit!"
|
|
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 04.08.08 22:34
tja, dann haste ein problem, wenn du dich nicht mit assembler auskennst...
ASM sind nur die memonics für die speicherabbildung. in diesem fall rat ich dir, dich mal intensiv mit ASM auseinanderzusetzen. das sind die grundlagen, wenn du in diesem bereich was machen willst...
PS: wenn du ASM drauf hast, solltest dir 'n paar gute bücher über compilerbau reinziehen...
PPS: die paar bytes kannste schreiben wie du willst .. in aller regel schreibt man mit dem compiler selbst dem compiler .. z.b. so in C, oder auch in Delphi 
|
|
delfiphan
      
Beiträge: 2684
Erhaltene Danke: 32
|
Verfasst: Mo 04.08.08 22:38
Was soll dein Compiler denn alles können? Willst du nicht etwas Fertiges nehmen?
Compilerbau ist eines der komplizierteren Themen der Informatik. Genug kompliziert und aufwändig, dass man Compiler normalerweise nicht von Hand schreibt. Es gibt sog. Compiler-Compiler um den Source (oder zu mindest ein Gerüst) eines Compilers zu erzeugen.
Vielleicht probierst du's mal mit einem einfachen Interpreter für eine einfache Skriptsprache. Wenn du unbedingt eine Exe brauchst kannst du ja den Interpreter nehmen und dort das Skript als Ressource einbinden.
|
|
K.S.M. 
      
Beiträge: 82
Windows 7 Professional
Delphi 2010, HTML, JavaScript, CSS, PHP, ein wenig C, Flash ActionScript 2.0/3.0, SQL, Assembler
|
Verfasst: Mo 04.08.08 23:00
Ja, ich weiß das es kompliziert werden würde. Aber ich wollte mich ja auch mit dem Thema intensiv auseinander setzen.
Ich wollte jetzt erst einmal wissen, wie man eine COM-Datei schreibt, also wie sie aufgebaut ist, wie man die Assembler-befehle hineinschreibt usw.
_________________ "Programmieren ist keine Kunst. Programmieren ist eine Fähigkeit!"
|
|
Dunkel
      
Beiträge: 682
Mac OS X Snow Leopard
Xcode 3.1
|
Verfasst: Mo 04.08.08 23:22
K.S.M. hat folgendes geschrieben: | Ja, ich weiß das es kompliziert werden würde. Aber ich wollte mich ja auch mit dem Thema intensiv auseinander setzen.
Ich wollte jetzt erst einmal wissen, wie man eine COM-Datei schreibt, also wie sie aufgebaut ist, wie man die Assembler-befehle hineinschreibt usw. |
Nichts für Ungut, aber Du verrennst Dich gerade ein wenig. Offensichtlich hast Du nicht genügend Vorkenntnisse um in die Materie Compilerbau einzusteigen (mach Dir nichts draus, geht geschätzten 98% der in diesem Forum anwesenden Usern so).
Wie schon einige User geschrieben haben, solltest Du Dich vielleicht zuerst mal mit einem Interpreter beschäftigen (dass dabei auch was "gutes" rauskommen kann, sieht man an Wilhelm Zäune [Bill Gates halt]). Da lernst Du zumindest schon mal die grundlegendsten Grundlagen (Parser, etc.). Dann kannst Du Dich langsam in Assembler einlesen, die CPU-Spezifikationen von Intel und AMD büffeln. Vielleicht hast Du dann, nach 5 Jahren oder länger, genügend Informationen gesammelt um einen eigenen, kleinen Compiler zu basteln.
Warum möchtest Du Dir eigentlich eine eigene Programmiersprache schreiben? Die Idee ist ja schon fast verrückter, als sich ein eigenes Betriebssystem zu basteln... ist beides irgendwie ohne praktischen Nutzen. 
_________________ Ich streite einsam mich mit dieser Oberflächenwelt
Gutes sei ein löblich Brot von dem ich zehre - bis zum Tod [Das Ich - Im Ich]
|
|
Timosch
      
Beiträge: 1314
Debian Squeeze, Win 7 Prof.
D7 Pers
|
Verfasst: Di 05.08.08 11:54
K.S.M. hat folgendes geschrieben: | Ja, ich weiß das es kompliziert werden würde. Aber ich wollte mich ja auch mit dem Thema intensiv auseinander setzen.
Ich wollte jetzt erst einmal wissen, wie man eine COM-Datei schreibt, also wie sie aufgebaut ist, wie man die Assembler-befehle hineinschreibt usw. |
Ich habe gestern die Opcodes gepostet. Du übersetzt deine Programmiersprache in Assembler, ersetzt dann die Mnemonics durch die genannten Opcodes, machst aus Labels Speicheraddressen, aus Registern die entsprechenden Hex-Codes etc. und schreibst das ganze ganz normal in eine Datei. Dann hast du eine COM-Datei.
Wie sie aufgebaut ist, hättest du mit einem simplen Blick in die Wikipedia herausfinden können: Sie besteht schlicht und ergreifend nur aus einem Codesegment.
Am besten du gehst folgendermaßen vor: Beschäftige dich intensiv mit Assembler, dann kauf dir das Buch "Grundlagen und Techniken des Compilerbaus" von Niklaus Wirth, Addison-Wesley ISBN 3-89-319-931-4 (39,90 im Buchhandel, zumindest vor ein paar Jahren, als ich es mir gekauft habe) und lies es dir durch. Aus meiner persönlichen Erfahrung ist das eines der besten Bücher zu dem Thema (und einen kompetenteren Autoren wird man wohl kaum finden).
_________________ If liberty means anything at all, it means the right to tell people what they do not want to hear. - George Orwell
|
|
Sinspin
      
Beiträge: 1335
Erhaltene Danke: 118
Win 10
RIO, CE, Lazarus
|
Verfasst: Di 05.08.08 15:13
Wenn du alle Einzelteile, die du brauchst um von einem stückchen Quelltext zu einem Programm zu kommen, selber schreiben willst kannst du deine Idee, aus meiner Sicht, jetzt schon an den Nagel hängen.
Ich an deiner Stelle würde mir erstmal einen kleinen Interpreter mit sehr begrenztem Funktionsumfang schreiben. Und ein kleines Programm das in der Lage ist, eine von dir entwickelte Sprache in Code umzusetzen die dein Interpreter verstehen und ausführen kann.
Schon das ist für den Anfang eine ganz ordentliche Herausvorderung.
Wenn du das hast, kannst du deine Sprache verbessern, den compiler anpassen und den Umfang deines Interpreters erweitern.
Da werden sicher ein paar ordentlich harte Nüsse dabei sein die gelößt werden wollen, du wirst jedenfalls viel lernen.
Nicht nur über den Bau von Compilern, sondern auch über den Aufbau von Programmen.
Vom schreiben eines echten Assemblers und Linkers für WinX Exe'n oder auch für andere BS würde ich dir abraten. Da ist der Aufwand für einen einzelnen mittlerweile einfach zu groß.
Aber, es gibt frei verfügbare Assembler mit denen man für so ziemlich jede Plattform übersetzen kann. Wenn dein Compiler nicht Binärcode, sondern Assemblercode erstellt den du einem Assembler zum erzeugen einer Exe übergeben kannst, dann nimmt dir der Assembler den, aus meiner Sicht, unschönsten Teil der ganzen Sache nicht nur vollständig ab, er optimiert dein Programm auch gleich noch ein bisschen.
Ich spreche an dieser Stelle aus Erfahrung. Ich selber habe mich jahrelang mit dem Bau von Compilern und der Entwicklung einer eigenen Programmiersprache befasst und viele Fehlschläge hinnehmen müssen. Leider habe ich irgendwann das ganz aus Zeitmangel in die Ecke gestellt, in der Hoffnung wieder Zeit zu finden und diesem lahmen Interpreter durch was besseres zu ersetzen.
_________________ Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?
|
|
Boldar
      
Beiträge: 1555
Erhaltene Danke: 70
Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
|
Verfasst: Mi 06.08.08 11:07
übrigens heisst es Compiler und nicht Compilierer
|
|
K.S.M. 
      
Beiträge: 82
Windows 7 Professional
Delphi 2010, HTML, JavaScript, CSS, PHP, ein wenig C, Flash ActionScript 2.0/3.0, SQL, Assembler
|
Verfasst: Sa 09.08.08 18:53
So, ich schließe diesen Thread erstmal
Vielen Dank für die Hilfe! Ich werde mich jetzt als erstes mit ASM auseinandersetzen und dann mit dem Umwandeln von ASM in Maschinencode und dann in das Umwandeln von meiner Programmiersprache in ASM.
_________________ "Programmieren ist keine Kunst. Programmieren ist eine Fähigkeit!"
|
|
|