Was bedeutet—oder hat—"volatile void function( ... )" zu tun?

Ich habe gesehen, Wie viele Nutzung ist "volatil" - Schlüsselwort in C++ - Funktion, die aus der Grammatik Perspektive? über die Verwendung des volatile-Schlüsselwort auf Funktionen, aber es gab keine klare Erklärung, was Fall 1 aus, dass die Frage kam. Nur eine Aussage von einem der Befragten, dass es schien sinnlos/nutzlos.

Doch ich kann nicht ganz akzeptieren, dass die Aussage, da der AES-software-Implementierung für GNUC verwendet wurden für buchstäblich Jahre, und Sie haben eine Reihe von Funktionen, wie:

INLINE volatile void functionname( /* ... */ ) {
    /* ... */
    asm( /* ... */ ) //embedded assembly statements
    /* ... */
}

Es muss einen Grund gegeben haben, für, die Nutzung. Kann mir jemand:

Eine. sagen Sie mir, was der ursprüngliche Grund war; und

B. wie zur Erzielung der gewünschten Wirkung nun?

Ich bin mit Ubuntu und GCC 4.6.3.


Hinweis: Der nächste, den ich bin gekommen, um eine Erklärung dafür ist, dass vor GCC 2.5, könnten Sie fälschen die 'noreturn' - Attribut umgesetzt wurde in 2.5 über die folgenden:

void fatal( /* ... */ ) { /* ... */ exit(1); }

typedef void voidfn ();

volatile voidfn fatal;

Dies würde erlauben, dass der compiler erkennt, dass "tödlich" war nicht zurückkehren.

Aber das Szenario scheint nicht zu gelten für die AES-code. Es ist schon eine lange Zeit, da habe ich alles in Assembler, aber ich glaube, ich würde erkennen, ein Sprung oder sowas.

InformationsquelleAutor der Frage EdwinW | 2013-01-12

Schreibe einen Kommentar