Questo nasce da una domanda prima di oggi in materia di biblioteche bignum e hack specifici GCC per il linguaggio C In particolare, sono stati utilizzati questi due dichiarazioni:?.Cosa GCC __attribute __ ((modalità (XX)) effettivamente fare
typedef unsigned int dword_t __attribute__((mode(DI)));
Nei sistemi 32 bit e
typedef unsigned int dword_t __attribute__((mode(TI)));
Nei sistemi a 64-bit.
presumo data questa è un'estensione al linguaggio C che non esiste alcun modo per realizzare ciò ne consegue negli standard attuali (C99).
Quindi le mie domande sono semplici: questa supposizione è corretta? E cosa fanno queste affermazioni alla memoria sottostante? Penso che il risultato è che ho 2*sizeof(uint32_t)
per un dword
in sistemi a 32 bit e 2*sizeof(uint64_t)
per sistemi a 64 bit, sono corretto?
Proprio quello che mi serviva, +1. Non c'è un modo "standard" per aggirare questo, quindi, lo prendo? dire dichiarare un tipo a 128 bit? Nel suo attuale utilizzo, possiamo 'dword = word << 1' in modo sicuro e semplice; Preferirei non sostituirlo con una funzione, ecc. Se posso aiutarlo. –
@Ninefingers: in GCC puoi usare '__int128' credo: http://gcc.gnu.org/onlinedocs/gcc/_005f_005fint128.html. –
@Ninefingers: GCC supporta i tipi di estensione '' __int128_t' e __uint128_t' (almeno su piattaforme a 64 bit, non è sicuro su bersagli a 32 bit) –