title: What does GCC __attribute__((mode(XX)) actually do?
body: <p>This arose from a question earlier today on the subject of bignum libraries and gcc specific hacks to the C language. Specifically, these two declarations were used:</p>
  
  <pre><code>typedef unsigned int dword_t __attribute__((mode(DI)));
  </code></pre>
  
  <p>On 32 bit systems and</p>
  
  <pre><code>typedef unsigned int dword_t __attribute__((mode(TI)));
  </code></pre>
  
  <p>On 64-bit systems.</p>
  
  <p>I assume given this is an extension to the C language that there exists no way to achieve whatever it achieves in current (C99) standards.</p>
  
  <p>So my questions are simple: is that assumption correct? And what do these statements do to the underlying memory? I think the result is I have <code>2*sizeof(uint32_t)</code> for a <code>dword</code> in 32-bit systems and <code>2*sizeof(uint64_t)</code> for 64-bit systems, am I correct?</p>