title: unclear c code: double underscore in c macro
body: <p>I have to interpret some c-code as a kind of homework and I don't really understand this macro:</p>
  
  <pre><code>#define rdtscll(val)__asm__ __volatile__("rdtsc":"=A"(val))
  </code></pre>
  
  <p>I know it's some kind of static function named <code>rdtscll</code> which receives one parameter <code>val</code>. But what about the rest?</p>
  
  <ul>
  <li>What are <code>__asm__</code> and <code>__volatile__</code> and why those underscores?</li>
  <li>are those 2 different constants separated by a space?</li>
  </ul>