05.07.2013 Aufrufe

Diplomarbeit ? Konzeption und Evaluierung eines ... - CES

Diplomarbeit ? Konzeption und Evaluierung eines ... - CES

Diplomarbeit ? Konzeption und Evaluierung eines ... - CES

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Kapitel 5. Implementierung <strong>und</strong> Testumgebung<br />

123 @map = split("\n",‘nm ELF_FILE‘);<br />

124 for (i=@map; i>0; i--) {<br />

125<br />

126 if (map[i] =~ /^(.*) T (.*)/) { # Symbol ist Funktion im Textsegment<br />

127 adr=1; name=2;<br />

128<br />

129 if (grep (/^name/, @WISHLIST)) { # Funktion soll exportiert werden<br />

130<br />

131 # Funktionssignatur suchen<br />

132<br />

133 }<br />

134 }<br />

135 }<br />

In diesem Fall sind bereits die Adresse der Funktion <strong>und</strong> der Funktionsname bekannt.<br />

Es fehlt die Funktionssignatur, welche jedoch aus den Headerfiles extrahiert werden<br />

kann. Hierfür setzt das Skript die GNU Werkzeuge ” find“ <strong>und</strong> ” grep“ ein, um in den<br />

im Array @INC PATH angegebenen Pfaden zunächst rekursiv alle Headerfiles zu suchen<br />

<strong>und</strong> anschließend in diesen Headerfiles nach dem Namen der Funktion zu suchen:<br />

137 while (x for file in ‘find . -iname "*.h"‘; do<br />

grep cc1100_SetChannel $file; done;<br />

void cc1100_SetChannel(BYTE channel);<br />

Jeder zurückgegebene Treffer wird zunächst mit Hilfe von regulären Ausdrücken so bereinigt,<br />

dass er der Form ” Typ Name (Signatur)“ entspricht. Ein einfacher regulärer<br />

Ausdruck zerlegt dieses Ergebnis in die Variablen f typ, f name <strong>und</strong> f sig. Der<br />

dann so gef<strong>und</strong>ene Name wird mit dem gesuchten Namen verglichen. Falls beide übereinstimmen,<br />

stehen alle Informationen zur Verfügung, die nötig sind, um den gewünsch-<br />

78

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!