Mahlzeit Forum :)
Wie kann ich dem GCC mitteilen das er für ein zusammenhängendes Switch
Konstrukt eine Sprungtabelle erzeugen soll?
Wenn ich also habe:
1
switch(foo)
2
{
3
case0:
4
// Code
5
break;
6
case1:
7
// Code
8
break;
9
case2:
10
// Code
11
break;
12
// Weiter von 3 bis...
13
case14:
14
// Code
15
break;
16
case15:
17
// Code
18
break;
19
}
Soll daraus intern im Compiler nicht umbedingt das da werden:
1
if(foo==1){...code...}
2
if(foo==2){...code...}
3
if(foo==3){...code...}
4
...
5
if(foo==14){...code...}
6
if(foo==15){...code...}
Sondern eher:
1
constintfootab[]={footab_pointer0,footab_pointer1,...,footab_pointer15};//Geht das so?
2
gotofootab[foo];// Ja, ich weis, wenn hier was anderes als 0..15 ankommt springt er ins Nirvana.
Markus Stehr wrote:
> Das weis ich ja nicht ob der GCC in der Lage ist zu erkennen das hier> aufeinander folgende Werte abgefragt werden.
Normelerweise erkennen Compiler das. Ist ja auch nicht weiter
Raketentechnik. Klarheit bringt wohl nur das Assemblerlisting.
Eine eigene Frage?
Dieser Thread ist über 17 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.