Autor Thema: ASMler gesucht  (Gelesen 18730 mal)

joachim_neu

  • Beiträge: 1 228
    • Profil anzeigen
    • http://www.joachim-neu.de
Gespeichert
« am: 23. December 2005, 22:51 »
Hallo,

Ich wollte mal fragen, ob es hier in der Community jemanden gibt, der Lust hätte, mit mir zusammen einen Assembler in Assembler zu schreiben.
Ziel ist es, einen guten Assembler (ggf. auch mit Optimierung) zu programmieren, der leicht portabel ist.

Warum einen neuen Assembler schreiben? Und warum auch noch in Assembler? Nun, Assembler "ist" Maschinencode (gut, der Maschinencode sieht etwas anderst aus, aber im Prinzip wird das 1 zu 1 übersetzt). Das heißt mit Assembler hat man die volle "Macht" über den PC. Warum also nicht einen Assembler als erstes Programm in das System integrieren? So währe das System recht schnell freestanding und man könnte es mit sich selbst weiterentwickeln. Außerdem könnte man dann den Assembler mit sich selbst weiterentwickeln/debuggen. Und dadurch, dass der Assembler sehr portabel ist, könnte man ihn durch das Austauschen von wenigen grundlegenden Funktionen auf ein anderes System übertragen.

Bei Interesse bitte hier posten oder über ICQ (247390343) oder eMail (joachim_neu@web.de) melden.

Gruß,

Joachim
http://www.joachim-neu.de | http://www.orbitalpirates.de | http://www.middleageworld.de

System: 256 RAM, GeForce 2 MX 400, AMD Athlon XP 1600+, Windows XP, 1x Diskette, 1x DVD-ROM, 1x CD-R(W) Brenner,...

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 24. December 2005, 13:20 »
"mit Optimierung"? Heisst das, dass der Assembler den Assembler-Code optimiert? Verliert man da nicht gerade die Vorteile von Assember, wie "1 zu 1 Übersetzung" also die absolute Kontrolle über den vollständigen Code?
Dieser Text wird unter jedem Beitrag angezeigt.

Osbios

  • Beiträge: 247
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 24. December 2005, 14:06 »
Zum Thema Optimierung habe ich, vor allem wegen Sachen wie JIT (Java) ein par Ideen parat. Werde ich später was zu posten.

Das erste was man machen muss ist wohl die festlegung eines Syntaxes. Bzw. soll man diesen von NASM, FASM, AT&T... übernehmen? Soll man gleich was ganz neues entwickeln?
In welchem Assembler er dann geschrieben wird sollte klar sein, da er ja mit sich selber assembliert werden soll.

Für die Kompatibilität würde ich eine Interne API vorschlagen.
Die eigentlich nur dazu dient, dass von Sicht des assemblers alles gleich angesprochen wird. Also Datei Ein-/Ausgabe, Speichermanagement. Denn Assembler haben im gegensatz zu Hochsprachen meist keine libs welche diese aufgabe übernehmen.

Assembler
   \/
Interne API
   \/
API des jeweiligen Systems
db 0x55AA

joachim_neu

  • Beiträge: 1 228
    • Profil anzeigen
    • http://www.joachim-neu.de
Gespeichert
« Antwort #3 am: 24. December 2005, 16:09 »
Zitat von: Osbios
Assembler
   \/
Interne API
   \/
API des jeweiligen Systems
,

Exakt so ist es gedacht. Das vereinfacht das Portieren enorm.

Zitat von: PorkChicken
"mit Optimierung"? Heisst das, dass der Assembler den Assembler-Code optimiert? Verliert man da nicht gerade die Vorteile von Assember, wie "1 zu 1 Übersetzung" also die absolute Kontrolle über den vollständigen Code?


Doch. Aber man könnte ja eine Option einbauen, ob optimiert werden soll oder nicht.

Zitat von: T0ast3r
Ich hätte Interesse daran  :wink:
Vor allem weil ich die ganze Zeit in Assembler programmiere und einen Assembler selbst für mein OS brauchen könnte.


Gut, ich schließe mich mal mit dir kurz!

Zitat von: Osbios
Das erste was man machen muss ist wohl die festlegung eines Syntaxes. Bzw. soll man diesen von NASM, FASM, AT&T... übernehmen? Soll man gleich was ganz neues entwickeln?
In welchem Assembler er dann geschrieben wird sollte klar sein, da er ja mit sich selber assembliert werden soll.


Als Syntax würde ich den von NASM eins zu eins übernehmen. Dann können wir den Assembler mit NASM schreiben und er kann sich gleich selbst assemblieren.
http://www.joachim-neu.de | http://www.orbitalpirates.de | http://www.middleageworld.de

System: 256 RAM, GeForce 2 MX 400, AMD Athlon XP 1600+, Windows XP, 1x Diskette, 1x DVD-ROM, 1x CD-R(W) Brenner,...

Mihail121

  • Beiträge: 13
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 24. December 2005, 16:48 »
Ich wär mal dran interessiert aber nur dann, wenn der Assembler mehrere CPUs und Microcontroller unterstützen wird.
_p.wur$t

Der Sensemann owz ya

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #5 am: 24. December 2005, 18:38 »
Na ja - wie soll dir der Assembler bei mehreren CPUs helfen? Wobei das nicht uninteressant wär. Ich finde alle Sprachen sind bislang nur sehr mangelhaft für Multithreading geeignet.
*post*

Mihail121

  • Beiträge: 13
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 24. December 2005, 18:41 »
Ich meinte mehrere Arten von CPUs und Microcontrollern :P
_p.wur$t

Der Sensemann owz ya

Mihail121

  • Beiträge: 13
    • Profil anzeigen
Gespeichert
« Antwort #7 am: 25. December 2005, 11:45 »
Natürlich ist es mir aufgefallen, ich arbeite ja intensiv mit NASM aber es geht um etwas ganz anderes: NASM unterstützt nur x86-CPUs aber eine Unterstützung für Motorola 68000 oder für die PIC-Microcontroller, um einige zu nennen, wäre auf jeden Fall auch wünschenswert.
_p.wur$t

Der Sensemann owz ya

joachim_neu

  • Beiträge: 1 228
    • Profil anzeigen
    • http://www.joachim-neu.de
Gespeichert
« Antwort #8 am: 25. December 2005, 12:08 »
Die Prozessoren haben aber einen ganz anderen Befehlssatz. Das kann man nicht einfach 1 zu 1 portieren, es sei denn man baut verschiedene Befehlssätze ein. Aber ich denke für den Anfang sollte x86 reichen.
http://www.joachim-neu.de | http://www.orbitalpirates.de | http://www.middleageworld.de

System: 256 RAM, GeForce 2 MX 400, AMD Athlon XP 1600+, Windows XP, 1x Diskette, 1x DVD-ROM, 1x CD-R(W) Brenner,...

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #9 am: 26. December 2005, 17:56 »
Also ich bin auch gerade dabei mir einen Assembler für mein OS zu bauen. Dieser soll aber nicht die NASM-Syntax haben (die kann ich nämlich nicht leiden) sondern die TASM/MASM -Syntax. Einiges habe ich schon beschaft, aber das meiste kommt erst noch. ;) Also wenn Ihr an Spezielle Infos für den ASM Bau kommt, lasst sie mich wissen. ;)

Danke!!!
In the Future everyone will need OS-64!!!

joachim_neu

  • Beiträge: 1 228
    • Profil anzeigen
    • http://www.joachim-neu.de
Gespeichert
« Antwort #10 am: 27. December 2005, 09:08 »
Ah, gut. Dann kannst du uns ja indirekt auch unterstützen. Mein Hauptproblem ist die Opcode-Generierung. Schick mir bitte mal alles, was du über Assembler-Bau hast per eMail. Währe sehr froh drüber.
http://www.joachim-neu.de | http://www.orbitalpirates.de | http://www.middleageworld.de

System: 256 RAM, GeForce 2 MX 400, AMD Athlon XP 1600+, Windows XP, 1x Diskette, 1x DVD-ROM, 1x CD-R(W) Brenner,...

SSJ7Gohan

  • Beiträge: 398
    • Profil anzeigen
Gespeichert
« Antwort #11 am: 27. December 2005, 12:43 »
Hm, wo liegen denn deine Probleme in der opcode generierung?

joachim_neu

  • Beiträge: 1 228
    • Profil anzeigen
    • http://www.joachim-neu.de
Gespeichert
« Antwort #12 am: 27. December 2005, 22:24 »
Präfixe sind mir klar. Opcode an sich auch. ModR/M-Byte ist mein Hauptproblem. Ich verstehe nicht, wie das zusammengesetzt wird. SIB ist wieder kein Problem. Und Displacement und Konstante auch nicht.
http://www.joachim-neu.de | http://www.orbitalpirates.de | http://www.middleageworld.de

System: 256 RAM, GeForce 2 MX 400, AMD Athlon XP 1600+, Windows XP, 1x Diskette, 1x DVD-ROM, 1x CD-R(W) Brenner,...

SSJ7Gohan

  • Beiträge: 398
    • Profil anzeigen
Gespeichert
« Antwort #13 am: 27. December 2005, 22:44 »
Auf sandpile.org gibt es Tabellen zum mod R/M Byte. Es besteht aus 3 Teilen, den oberen 2 Bits, die den Typ der Parameter im mod R/M Byte angeben (Register, SSE Register usw.), 3 Bits, die einen Parameter angeben, und nochmal 3 Bits, die einen anderen Parameter angeben. Wie die Daten im mod R/M Byte interpretiert werden, hängt von der Instruction ab. (Steht auch auf sandpile)

joachim_neu

  • Beiträge: 1 228
    • Profil anzeigen
    • http://www.joachim-neu.de
Gespeichert
« Antwort #14 am: 28. December 2005, 10:53 »
Thx, ich schau mich mal da um.
http://www.joachim-neu.de | http://www.orbitalpirates.de | http://www.middleageworld.de

System: 256 RAM, GeForce 2 MX 400, AMD Athlon XP 1600+, Windows XP, 1x Diskette, 1x DVD-ROM, 1x CD-R(W) Brenner,...

[MM]

  • Beiträge: 130
    • Profil anzeigen
    • www.mmcoding.eu
Gespeichert
« Antwort #15 am: 31. December 2005, 13:13 »
Hallo,

ich hab mal (unter anderem) einen Makro-Asembler geschrieben:
http://wwwstud.fh-zwickau.de/~micmo/compiler.html
(ganz unten auf der Seite nach meinen Compilern)

Ist zwar nicht in Assembler sondern in C geschrieben, aber eventuell hilft es euch ja weiter...

MM

n3Ro

  • Beiträge: 288
    • Profil anzeigen
Gespeichert
« Antwort #16 am: 03. January 2006, 00:26 »
Wozu denn noch einen Assembler? Es gibt doch nun schon genug: NASM,YASM,FASM,GAS,(TASM,MASM), ...
FASM erfüllt bereits alle Ziele bezüglich des "Assembler in Assembler", in Sachen Portabilität und Vielfältigkeit lässt GAS alle ganz schön alt aussehen (zig Prozessorfamilien, verschiedene Syntax, ...). Damit kann man doch zufrieden sein. Wenn man was eigenes machen will, dann doch lieber irgendwas, was es so nicht gibt ;-)
Agieren statt Konsumieren!

[MM]

  • Beiträge: 130
    • Profil anzeigen
    • www.mmcoding.eu
Gespeichert
« Antwort #17 am: 03. January 2006, 12:55 »
Sicher gibt es schon eine Menge, aber man benutzt doch am liebsten Tools die man selber geschrieben hat, oder?
Außerdem lernt man noch ne Menge dabei. Und ich konnte meinen Assembler zB als Grundlage für meinen C Compiler benutzen und so einen C Compiler gibt es bestimmt nicht...

MM

n3Ro

  • Beiträge: 288
    • Profil anzeigen
Gespeichert
« Antwort #18 am: 03. January 2006, 14:17 »
Naja, kommt drauf an. Eigene Tools sind oftmals fehlertraechtiger und durch ihre Proprietaritaet schafft man sich nicht immer Unterstuetzung, es sei denn es ist was neues, was viele brauchen.
Das mit dem Lernen ist ja immer so, aber man muss das Rad nicht neu erfinden um zu erkennen das es rund ist. Und einen Assembler wuerde ich schon in die Kategorie "Rad" einordnen. Mit hoeheren Sprachen ist das schon was anderes, da hast du schon recht.
Agieren statt Konsumieren!

[MM]

  • Beiträge: 130
    • Profil anzeigen
    • www.mmcoding.eu
Gespeichert
« Antwort #19 am: 03. January 2006, 15:11 »
Eigentlich komisch, dass gerade in diesem Forum die Frage nach dem "Warum" gestellt wird: Warum sollte man sich dran setzen ein eigenes Betriebssystem zu schreiben, es gibt doch auch schon eine Menge die auch ganz passabel funktionieren...
Und vor allem denke ich auch, dass es zum "Low Level" dazu gehört nicht nur fertige Komponenten (oder Räder  :wink: ) zu benutzen, dann könnte man auch gleich Java programmieren...

MM

 

Einloggen