29.01.2013 Aufrufe

Optimierung einer Softwarebibliothek für sicherheitsrelevante

Optimierung einer Softwarebibliothek für sicherheitsrelevante

Optimierung einer Softwarebibliothek für sicherheitsrelevante

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

4 Konzept und Implementierung 43<br />

Da bei allen Register-Tests das Register R1 als Referenz dient, wird dieses auf eine<br />

andere Weise überprüft. Anstelle der Schiebeoperation LSL wird die zweier Multiplikation<br />

verwendet. Durch das Testen des Register R1 auf zwei verschiedene Weisen wird<br />

mit sehr hoher Wahrscheinlichkeit sichergestellt, dass das Register fehlerfrei ist. Die<br />

Funktionsweise kann an dem folgenden Listing nachvollzogen werden:<br />

1. " mov r0,#0x1; "<br />

2. " mov r1,#0x1; "<br />

3. " mov r2,#0x2; "<br />

4. " Schleife_r0_r1: mul r3,r0,r2;"<br />

5. " mov r0,r3; "<br />

6. " mov r3,#0; "<br />

7. " mul r3,r1,r2; "<br />

8. " mov r1,r3; "<br />

9. " mov r3,#0; "<br />

10. " teq r0,r1; bne Error;"<br />

11. " teq r0,#0x80000000; bne Schleife_r0_r1;"<br />

Wobei zu diesem Listing gesagt werden muss, dass die Fehlerfreiheit des Registers R3<br />

angenommen wird.<br />

4.1.4 CPU-Test<br />

Konzept<br />

Wie schon in den Grundlagen erwähnt wurde, bedeutet das Testen <strong>einer</strong> CPU eigentlich<br />

das Testen von einzelnen Befehlen der CPU. Die Befehle des Philips LPC2148 wurden<br />

in dem Kapitel Grundlagen aufgelistet.<br />

Beim Testen wird das Vergleichsprinzip der Fehleraufdeckung benutzt. Der CPU-Test<br />

wird in mehrere kl<strong>einer</strong>e Tests aufgeteilt. In einzelnen Funktionen werden arithmetische<br />

und logische, Load und Store, Vergleichs- sowie Sprungbefehle getestet.<br />

Implementierung der arithmetischen, logischen und Multiplikation-Befehl-Tests<br />

Wie bei der Implementierung aller CPU-Tests wird die Assemblersprache verwendet,<br />

weil sich nicht alle Befehle der CPU in Programmiersprache C implementieren lassen.<br />

Die Funktionsweise des Testens aller arithmetischen, logischen sowie Multiplikations-<br />

Befehlen ist folgende:<br />

1. Zwei Register werden mit Testmustern beladen.<br />

2. Der zu prüfende Befehl wird auf diese Register angewendet.<br />

3. Das Resultat wird mit dem erwarteten Wert verglichen.<br />

4. Ist die Prüfung erfolgreich, wird der nächste Befehl getestet.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!