Autor Beitrag
K.S.M. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 82

Windows 7 Professional
Delphi 2010, HTML, JavaScript, CSS, PHP, ein wenig C, Flash ActionScript 2.0/3.0, SQL, Assembler
BeitragVerfasst: 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



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: 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. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 82

Windows 7 Professional
Delphi 2010, HTML, JavaScript, CSS, PHP, ein wenig C, Flash ActionScript 2.0/3.0, SQL, Assembler
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 682

Mac OS X Snow Leopard
Xcode 3.1
BeitragVerfasst: Mo 04.08.08 23:22 
user profile iconK.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. :roll:

_________________
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
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1314

Debian Squeeze, Win 7 Prof.
D7 Pers
BeitragVerfasst: Di 05.08.08 11:54 
user profile iconK.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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1335
Erhaltene Danke: 118

Win 10
RIO, CE, Lazarus
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1555
Erhaltene Danke: 70

Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
BeitragVerfasst: Mi 06.08.08 11:07 
übrigens heisst es Compiler und nicht Compilierer
K.S.M. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 82

Windows 7 Professional
Delphi 2010, HTML, JavaScript, CSS, PHP, ein wenig C, Flash ActionScript 2.0/3.0, SQL, Assembler
BeitragVerfasst: Sa 09.08.08 18:53 
So, ich schließe diesen Thread erstmal :D

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!"