Gast
#1485959
Hallo, ich habe eine Frage bezüglich der KEIL-Compiler-Optimierung. ---Worum geht es--- Ich habe schon oft gelesen, dass der KEIL-Compiler mit zu den Besten gehört in Bezug auf die Optimierungen und dass KEIL dementsprechend auch nicht genutzte Codeteile automatisch ausgliedert. Um mein Problem so einfach wie möglich darstellen zu können, werde ich es anhand eines kleinen Beispiels erklären. ---Beispiel---
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
Ich habe eine main.c mit diversen Funktionen. Die test3() hat den Prototypen und die Funktionsbeschreibung in der Datei file1.h/file1.c. Wenn ich kompiliere erstellt KEIL die *.obj und *.ist Dateien. In den *.ist-Dateien sehe ich den Code in C und in Assembler zu jeder Codedatei. ---Frage--- Wenn ich jetzt den Funktionsaufruf von test3() in der main.c auskommentiere, dann werden auch automatisch die Dateien file1.h und file1.c überflüssig, dementsprechend auch der #include-Befehl für die file1.h. Ich hätte gedacht, dass dann diese Codeteile jetzt in der *.ist nicht mehr auftauchen, bzw. die test3.ist erst gar nicht erstellt wird, weil die Codeteile darin nicht mehr benötigt werden. Wieso wird das nicht rausoptimiert? Sind die *.ist-Dateien überhaupt schon optimiert? Kann man irgendwo den optimierten Code sehen? Wirft KEIL automatisch alle Funktionen, Variablen, Definitionen, Dateien (*.c), usw. raus, wenn diese nirgends aufgerufen werden? Danke im Voraus!