Re: Unbenutzte Bereiche im OS, ASM-Fragen Kategorie: Progr. Assembler, TaskingTools, OS (von André H. - 23.09.2004 11:36) | ||
Als Antwort auf Unbenutzte Bereiche im OS, ASM-Fragen von Gordon Klimm - 22.09.2004 12:57 | ||
| ||
Hallo Gordon, > Beim Untersuchen des OS kann ich ein paar Bereiche > nicht einordnen: > > 0x0BF6 bis 0x0E72 > 0x17F2 bis 0x1916 > 0x2570 bis 0x25CE > 0x25E4 bis 0x2648 > > Stehen in diesen Bereichen eigentlich verwertbare Daten? > im 1. Bereich scheinen debug-informationen zu liegen, die > letzteren Bereiche enthalten m.E. sinnlosen Code... Es gibt einige freie Bereiche im OS, die durch die Optimierung bei OSOPT_V2 entstanden sind. Die von Dir genannten Bereiche enthalten alles andere als sinnlosen Code. ;-) Hast Du Dir schonmal das von Eric Hospel disassemblierte OS angesehen ? Im Adressbereich 0x200 bis 0x347 befinden sich Festtexte Im Addresbereich 0x348 bis 0x707 befinden sich diverse Sprungtabellen. Im Adressbereich 0x706 bis 0xB07 befinden sich die Sprungtabellen für die VM-Codes. (vgl. vmcodes.c2) Im Adressbereich 0xB08 bis 0x127befinden sich weitere Sprungtabellen. Im Adressbereich 0x17F2 bis 0x1916 befinden sich Routinen, die zum Initialisieren von "Data Page Address Pointer" benötigt werden. Im Adressbereich 0x2570 bis 0x25CF sind die Flash-Lösch-Routinen ausgelagert, welche vor der Benutzung in den internen RAM-kopiert und dort ausgeführt werden. Im Adressbereich 0x25E4 bis 0x2649 ist nochmals dasselbe, nur für die Flashschreibroutinen. > Au�erdem ist mir aufgefallen, das bei vielen Funktionen > #8 als Parameter für EXTS-Aufrufe übergeben wird. > Kommen eigentlich au�er > * SEGMENT 0 (Programm) > * SEGMENT 3 (cc2tools) und > * SEGMENT 8 (RAM) > noch andere Segmente zum Einsatz? Was meinst Du mit "cc2tools" ? Vom OS selbst werden nur die Segmente 0, 4, 5, 6 und 7 benutzt. 0 = OS 4, 5 = VM-Codes (Programm) 6, 7 = Konstantenspeicher (das steht sehr schön im Handbuch ;-) ) Die Segmente 1, 2 und 3 sind quasi frei und können für Assemblerprogrammierung und sonstige Daten verwendet werden. (Segmente 1 und 2 erst seit OSOPT V3.0) Segment 3 wide eben auch primär für ASM-Treiber benutzt. (z.B. sys0002.hex, flash.hex, i2ccom.hex etc.) > au�erdem: > Wo ist der Unterschied zwischen > > CALLS L0A176 (mit RETS-Rücksprung) > RETS > > und > > JMPS L0A176 (mit RETS-Rücksprung) > Vom Programm ablauf, keiner. ;-) Da aber das OS ursprünglich in C geschrieben wurde, gibt es eben kaum JMPS/A. Das zweite Konstrukt ist geringfügig schneller und hat eine Verschachtelung weniger. MfG André H. Antworten bitte nur ins Forum! Fragen per EMail auf Forum-Postings werden nicht beantwortet! Das macht meine Heizung gerade | ||
Antwort schreiben Antworten: |