MadMax2581
Mitglied
Hallo alle zusammen! Hab mal wieder ein Problem und hoffe das ihr mir helfen könnt.
Haba ein Mapfile was ca. so aussieht:
...
-------
Modules
-------
..\objects\crtsi.o:
start 00008285 end 0000831d length 152 section TEXT (.text)
start 00000000 end 00000048 length 72 section .debug
..\objects\ramcheck_asm.o:
start 0000831d end 0000845b length 318 section TEXT (.text)
start 00000048 end 00000097 length 79 section .debug
..\objects\mcu.o:
start 0000011a end 00009c86 length 39788 section .debug
start 00008550 end 00008572 length 34 section TEXT (.text)
start 00008572 end 0000857a length 8 section TEXT (.text)
start 0000857a end 0000857d length 3 section TEXT (.text)
..\objects\port.o:
start 00009c86 end 000137b4 length 39726 section .debug
start 0000857d end 000085ed length 112 section TEXT (.text)
start 000085ed end 000085fd length 16 section TEXT (.text)
..\objects\gpt.o:
start 000137b4 end 0001d48d length 40153 section .debug
start 00008071 end 00008079 length 8 section CONST (.const)
start 000085fd end 00008628 length 43 section TEXT (.text)
start 00008628 end 0000863a length 18 section TEXT (.text)
start 0000863a end 0000864d length 19 section TEXT (.text)
..\objects\scheduler.o:
start 00000223 end 0000022c length 9 section EXTENDED (.bss)
start 00000070 end 00000074 length 4 section DIRECT (.ubsct)
start 0001d48d end 000274f0 length 41059 section .debug
start 0000864d end 000087d4 length 391 section TEXT (.text)
start 000087d4 end 000087dd length 9 section TEXT (.text)
start ******** end ******** length 0 section TEXT *** removed ***
start 000087dd end 00008805 length 40 section TEXT (.text)
start 00008805 end 0000881d length 24 section TEXT (.text)
..\objects\sbc.o:
start 00000328 end 00000332 length 10 section EXTENDED (.bss)
start 00239dd3 end 0024491a length 43847 section .debug
start 00008284 end 00008285 length 1 section CONST (.const)
start 0000bb68 end 0000bbc5 length 93 section TEXT (.text)
start ******** end ******** length 0 section TEXT *** removed ***
start 0000bbc5 end 0000bbe5 length 32 section TEXT (.text)
start 0000bbe5 end 0000bc17 length 50 section TEXT (.text)
start 0000bc17 end 0000bc29 length 18 section TEXT (.text)
start 0000bc29 end 0000bc3c length 19 section TEXT (.text)
start 0000bc3c end 0000bc4e length 18 section TEXT (.text)
start 0000bc4e end 0000bc7e length 48 section TEXT (.text)
start 0000bc7e end 0000bc91 length 19 section TEXT (.text)
start ******** end ******** length 0 section TEXT *** removed ***
start ******** end ******** length 0 section TEXT *** removed ***
start ******** end ******** length 0 section TEXT *** removed ***
start ******** end ******** length 0 section TEXT *** removed ***
start ******** end ******** length 0 section TEXT *** removed ***
start ******** end ******** length 0 section TEXT *** removed ***
start 0000bc91 end 0000bc95 length 4 section TEXT (.text)
start 0000bc95 end 0000bca2 length 13 section TEXT (.text)
start 0000bca2 end 0000bcc1 length 31 section TEXT (.text)
start 0000bcc1 end 0000bcde length 29 section TEXT (.text)
start 0000bcde end 0000bce2 length 4 section TEXT (.text)
start 0000bce2 end 0000bcfc length 26 section TEXT (.text)
start 0000bcfc end 0000bd1d length 33 section TEXT (.text)
start 0000bd1d end 0000bd9b length 126 section TEXT (.text)
..\objects\vector_aw32.o:
start ******** end ******** length 0 section EXTENDED *** removed ***
start 0024e3ee end 00257f9d length 39855 section .debug
start 0000bd9b end 0000bd9d length 2 section TEXT (.text)
start 00008017 end 00008065 length 78 section VCT (.vectable)
..\objects\psa_t8_ftc.o:
start 00257f9d end 00257ff7 length 90 section .debug
start 00008000 end 00008010 length 16 section FTC (.FLASHTOOLCODE)
-----------
Stack usage
-----------
...
Jetzt hab ich das File mittels JavaCC in die einzelnen Blöcke (Modules, Stack usage, ...) zerlegt. Jetzt muss ich noch die einzelnen Unterblöcke ( ... .o: ) zerlegen und bestimmte Sachen auslesen.
Jetzt bräuchte ich Hilfe bei der Erkennung der Leerzeilen zwischen den Unterblöcken.
..\objects\crtsi.o:
start 00008285 end 0000831d length 152 section TEXT (.text)
start 00000000 end 00000048 length 72 section .debug
<-------------- diese hier --------------->
..\objects\ramcheck_asm.o:
start 0000831d end 0000845b length 318 section .text
start 00000048 end 00000097 length 79 section .debug
Die Wörter "start", "end", "length" und "section" sind als Schlüsselwörter festgelegt.
Mein Problem ist nun das z. B. "..\objects\ramcheck_asm.o:" auch Strings sind, geht aber nicht anders, weil sie noch an andere Stellen vorkommen, wo sie keine Schlüsselwörter sein dürfen. Der Rest (".debug", "TEXT (.text)", ".text") sind Strings, liegt ein Leerzeichen dazwischen sind es verschiedene Strings. Da ich aber nun vorher nicht weiss wie viele String es sind, vermischen sich die Blöcke bei zerlegen (brauche Daten von jedem .o einzeln).
Weiss jemand wie ich mit JavaCC die Leerzeilen zwischen den Blöcken erkennen kann und so jeden einzeln habe? Oder hat jemand eine andere Idee wie ich das mit JavaCC lösen könnte?
Schon mal danke für eure Hilfe!
Max
Haba ein Mapfile was ca. so aussieht:
...
-------
Modules
-------
..\objects\crtsi.o:
start 00008285 end 0000831d length 152 section TEXT (.text)
start 00000000 end 00000048 length 72 section .debug
..\objects\ramcheck_asm.o:
start 0000831d end 0000845b length 318 section TEXT (.text)
start 00000048 end 00000097 length 79 section .debug
..\objects\mcu.o:
start 0000011a end 00009c86 length 39788 section .debug
start 00008550 end 00008572 length 34 section TEXT (.text)
start 00008572 end 0000857a length 8 section TEXT (.text)
start 0000857a end 0000857d length 3 section TEXT (.text)
..\objects\port.o:
start 00009c86 end 000137b4 length 39726 section .debug
start 0000857d end 000085ed length 112 section TEXT (.text)
start 000085ed end 000085fd length 16 section TEXT (.text)
..\objects\gpt.o:
start 000137b4 end 0001d48d length 40153 section .debug
start 00008071 end 00008079 length 8 section CONST (.const)
start 000085fd end 00008628 length 43 section TEXT (.text)
start 00008628 end 0000863a length 18 section TEXT (.text)
start 0000863a end 0000864d length 19 section TEXT (.text)
..\objects\scheduler.o:
start 00000223 end 0000022c length 9 section EXTENDED (.bss)
start 00000070 end 00000074 length 4 section DIRECT (.ubsct)
start 0001d48d end 000274f0 length 41059 section .debug
start 0000864d end 000087d4 length 391 section TEXT (.text)
start 000087d4 end 000087dd length 9 section TEXT (.text)
start ******** end ******** length 0 section TEXT *** removed ***
start 000087dd end 00008805 length 40 section TEXT (.text)
start 00008805 end 0000881d length 24 section TEXT (.text)
..\objects\sbc.o:
start 00000328 end 00000332 length 10 section EXTENDED (.bss)
start 00239dd3 end 0024491a length 43847 section .debug
start 00008284 end 00008285 length 1 section CONST (.const)
start 0000bb68 end 0000bbc5 length 93 section TEXT (.text)
start ******** end ******** length 0 section TEXT *** removed ***
start 0000bbc5 end 0000bbe5 length 32 section TEXT (.text)
start 0000bbe5 end 0000bc17 length 50 section TEXT (.text)
start 0000bc17 end 0000bc29 length 18 section TEXT (.text)
start 0000bc29 end 0000bc3c length 19 section TEXT (.text)
start 0000bc3c end 0000bc4e length 18 section TEXT (.text)
start 0000bc4e end 0000bc7e length 48 section TEXT (.text)
start 0000bc7e end 0000bc91 length 19 section TEXT (.text)
start ******** end ******** length 0 section TEXT *** removed ***
start ******** end ******** length 0 section TEXT *** removed ***
start ******** end ******** length 0 section TEXT *** removed ***
start ******** end ******** length 0 section TEXT *** removed ***
start ******** end ******** length 0 section TEXT *** removed ***
start ******** end ******** length 0 section TEXT *** removed ***
start 0000bc91 end 0000bc95 length 4 section TEXT (.text)
start 0000bc95 end 0000bca2 length 13 section TEXT (.text)
start 0000bca2 end 0000bcc1 length 31 section TEXT (.text)
start 0000bcc1 end 0000bcde length 29 section TEXT (.text)
start 0000bcde end 0000bce2 length 4 section TEXT (.text)
start 0000bce2 end 0000bcfc length 26 section TEXT (.text)
start 0000bcfc end 0000bd1d length 33 section TEXT (.text)
start 0000bd1d end 0000bd9b length 126 section TEXT (.text)
..\objects\vector_aw32.o:
start ******** end ******** length 0 section EXTENDED *** removed ***
start 0024e3ee end 00257f9d length 39855 section .debug
start 0000bd9b end 0000bd9d length 2 section TEXT (.text)
start 00008017 end 00008065 length 78 section VCT (.vectable)
..\objects\psa_t8_ftc.o:
start 00257f9d end 00257ff7 length 90 section .debug
start 00008000 end 00008010 length 16 section FTC (.FLASHTOOLCODE)
-----------
Stack usage
-----------
...
Jetzt hab ich das File mittels JavaCC in die einzelnen Blöcke (Modules, Stack usage, ...) zerlegt. Jetzt muss ich noch die einzelnen Unterblöcke ( ... .o: ) zerlegen und bestimmte Sachen auslesen.
Jetzt bräuchte ich Hilfe bei der Erkennung der Leerzeilen zwischen den Unterblöcken.
..\objects\crtsi.o:
start 00008285 end 0000831d length 152 section TEXT (.text)
start 00000000 end 00000048 length 72 section .debug
<-------------- diese hier --------------->
..\objects\ramcheck_asm.o:
start 0000831d end 0000845b length 318 section .text
start 00000048 end 00000097 length 79 section .debug
Die Wörter "start", "end", "length" und "section" sind als Schlüsselwörter festgelegt.
Mein Problem ist nun das z. B. "..\objects\ramcheck_asm.o:" auch Strings sind, geht aber nicht anders, weil sie noch an andere Stellen vorkommen, wo sie keine Schlüsselwörter sein dürfen. Der Rest (".debug", "TEXT (.text)", ".text") sind Strings, liegt ein Leerzeichen dazwischen sind es verschiedene Strings. Da ich aber nun vorher nicht weiss wie viele String es sind, vermischen sich die Blöcke bei zerlegen (brauche Daten von jedem .o einzeln).
Weiss jemand wie ich mit JavaCC die Leerzeilen zwischen den Blöcken erkennen kann und so jeden einzeln habe? Oder hat jemand eine andere Idee wie ich das mit JavaCC lösen könnte?
Schon mal danke für eure Hilfe!
Max