Devilmarkus Geschrieben 21. Februar 2010 Teilen Geschrieben 21. Februar 2010 Hallo zusammen, Ich habe ein (kleineres) Problemchen: Ich möchte einen Compiler basteln, welcher mir zunächst in einer Schleife die einzelnen Zeilen die "remarked" Inhalte herausschneiden soll. Das Ganze soll ein Assembler werden. Das "Remark" Zeichen ist also in diesem Fall das Semikolon ; Nun versuche ich also, jede Zeile um den Text hinter diesem Semikolon herauszuschneiden. (Inkl. dem Semikolon natürlich) Mein "Versuch" scheitert leider noch: for (int p = 0; p < line; p++){ for (int i = 0; i < compiledLine[p].length(); i++){ if (compiledLine[p].charAt(i) == 0x03B){ compiledLine[p] = compiledLine[p].substring(compiledLine[p].length()-i,compiledLine[p].length()); break; } } } Was mache ich hier falsch? Beispiel: Dieses soll mein Assembler werden. Die gewünschte Ausgabe in den Compiler soll nun also wie folgt aussehen: ORG &4000 LD DE,&1111 LD DE,&1111 LD DE,&1111 LD DE,&0001 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 21. Februar 2010 Teilen Geschrieben 21. Februar 2010 Ich verweise auf "indexOf" der String-Klasse String (Java 2 Platform SE v1.4.2) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Devilmarkus Geschrieben 21. Februar 2010 Autor Teilen Geschrieben 21. Februar 2010 Ja, Du hast Recht! Wieso habe ich nicht gleich dran gedacht? *andiestirnpatsch* So "zerstückel" ich nun meinen Code: for (int p = 0; p < line; p++) { compiledLine[p] = removeSpaces(compiledLine[p]); for (int i = 0; i < compiledLine[p].length(); i++) { if (compiledLine[p].charAt(i) == 0x03B) { compiledLine[p] = compiledLine[p].substring(0, compiledLine[p].indexOf(";")); break; } } } for (int p = 0; p < line; p++) { System.out.println("# " + compiledLine[p]); } (Der letzte Loop ist nur zum Test. Das muss noch gegen den eigentlichen Compiler getauscht werden) Ausgabe: # # # # # ORG &4000 # # LD DE,&1111 # LD DE,&1111 # LD DE,&1111 # LD DE,&0001 ..... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 21. Februar 2010 Teilen Geschrieben 21. Februar 2010 Denk mal über Deine For-Schleife mit charAt nach ! Returns the index within this string of the first occurrence of the specified character. If a character with value ch occurs in the character sequence represented by this String object, then the index of the first such occurrence is returned -- that is, the smallest value k such that: this.charAt(k) == ch is true. If no such character occurs in this string, then -1 is returned. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Devilmarkus Geschrieben 21. Februar 2010 Autor Teilen Geschrieben 21. Februar 2010 (bearbeitet) Habe es nun so: for (int p = 0; p < line; p++) { compiledLine[p] = removeSpaces(compiledLine[p]); int check = compiledLine[p].indexOf(";"); if (check != -1) compiledLine[p] = compiledLine[p].substring(0, check); } Ergebnis: http://cpc-live.com/disass2.png Man kann hier nun im unteren Fenster sehen, welcher Code an den eigentlichen Kompiler gesendet wird. (Alle überflüssigen SPACE entfernt, ';' Remarks entfernt, Upper-Case usw...) Bearbeitet 21. Februar 2010 von Devilmarkus Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Devilmarkus Geschrieben 27. Februar 2010 Autor Teilen Geschrieben 27. Februar 2010 (bearbeitet) Dank schon so einiger Tips hier, habe ich nun meinen Z80 Assembler/Disassembler so gut wie fertig... Video: JavaCPC Assembler / Disassembler Test Wer hat Lust, meinen Code zu überschauen und eventuell zu optimieren? :old :cool: Bearbeitet 27. Februar 2010 von Devilmarkus Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
perdian Geschrieben 1. März 2010 Teilen Geschrieben 1. März 2010 Wer hat Lust, meinen Code zu überschauen und eventuell zu optimieren?Wieviel bietest du denn als Stundensatz? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Devilmarkus Geschrieben 1. März 2010 Autor Teilen Geschrieben 1. März 2010 Wieviel bietest du denn als Stundensatz? 500 Z80 Zyklen? (virtuelle) :floet: Nein, im Ernst, kann nichts bieten... Wenn, dann macht das jemand aus Spass an der Freude. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.