Diplomarbeit ? Konzeption und Evaluierung eines ... - CES
Diplomarbeit ? Konzeption und Evaluierung eines ... - CES
Diplomarbeit ? Konzeption und Evaluierung eines ... - CES
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