Was bedeutet GCC __attribute__((mode(XX)) eigentlich tun?
Entstand diese aus einer Frage, die bereits heute auf das Thema der bignum-Bibliotheken und gcc-spezifische hacks, um die C-Sprache. Speziell diese beiden Erklärungen wurden verwendet:
typedef unsigned int dword_t __attribute__((mode(DI)));
Auf 32-bit Systemen und
typedef unsigned int dword_t __attribute__((mode(TI)));
Auf 64-bit-Systeme.
Ich gehe davon aus gegebenen dies ist eine Erweiterung der Sprache C, es gibt keinen Weg, um zu erreichen was Sie erreicht in der aktuellen (C99) - standards.
Also meine Fragen sind einfach: ist diese Annahme korrekt? Und was haben diese Aussagen auf den zugrunde liegenden Speicher? Ich denke, das Ergebnis ist, ich habe 2*sizeof(uint32_t)
für eine dword
im 32-bit-Systeme und 2*sizeof(uint64_t)
für 64-bit-Systeme, bin ich richtig?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese können Sie explizit angeben, eine Größe für einen Typ ohne je nach compiler oder in der Maschine Semantik, wie die Größe der 'long' oder 'int'.
Beschrieben, ziemlich gut auf dieser Seite.
Ich zitiere aus dieser Seite:
So
DI
im wesentlichensizeof(char) * 8
.Weitere Erklärung, einschließlich
TI
Modus gefunden werden kann hier (möglicherweise besser als das erste Glied, aber sowohl als Referenz zur Verfügung gestellt).So
TI
im wesentlichensizeof(char) * 16
(128 bits).dword = word << 1
sicher und einfach; ich würde mich lieber nicht zu ersetzen, die mit einer Funktion etc, wenn ich helfen kann.__int128
ich glaube: gcc.gnu.org/onlinedocs/gcc/_005f_005fint128.html.__int128_t
und__uint128_t
(zumindest auf 64-bit-Plattformen, nicht sicher über 32-bit-targets)__attribute__((mode(SD)))
?@haelix Lesen Sie Einfach diese Frage und ich habe auch versucht zu verstehen, dieses Ding. Durch meine Lektüre: Sie finden die Definitionen in der [gcc/gcc/machmode.def] im GCC-source-tree. Für 'SD' sollte es werden:
und 'DECIMAL_FLOAT_MODE' sagt: