title: What does "asm volatile("pushfl; popl %0" : "=r" (eflags))" mean? in assembly at c?
body: <p>now I try to understand xv6 code. and I found below code.</p>
  <p>I think this code is related to assembly, but I couldn't find what it means.</p>
  <p>especially, I found the front part of <code>asm volatile(:)</code> means assembly opeation set and what is the eflags, but I couldn't find what the back of this(&quot;=r&quot; (eflags)) means.</p>
  <p>So my question is.. what does the below code mean?
  If you can give me some answer or advice, I'll really thank you for your sharing.
  Thank you :)</p>
  <pre><code>static inline uint readeflags(void)
  {
    uint eflags;
    asm volatile(&quot;pushfl; popl %0&quot; : &quot;=r&quot; (eflags));
    return eflags;
  }
  </code></pre>