eflagsの値を読み出す

rip/eipと同様にちょっとした手順が必要.

#include <iostream>

int main(int argc, char **argv)
{
     unsigned long eflags = 0;

     __asm__ __volatile__ ("pushf\n\t"
                           "popq %%rax\n\t"
                           "movq %%rax, %0\n\t"
                           :"=m"(eflags));

     std::cout << "eflags is " << std::hex << std::showbase << eflags << std::endl;

     return 0;
}