<< 7/13 >>
First Last

使い方いろいろ - 自力

    asm volatile(".loop:\n"
                 " mov $1, %%eax;\n"
                 " add %%eax, tsx_cnt;\n"
                 " '''.byte 0xc7, 0xf8;'''\n"  /* xbegin */
                 " '''.long .fail-.begin;'''\n"
                 ".begin:\n"
                 " addl %0, sum;\n"
                 " '''.byte 0x0f, 0x01, 0xd5'''\n"  /* xend */
                 " jmp .done;\n"
                 ".fail:\n"
                 " jmp .loop;\n"
                 ".done:\n"
                 ::"r"(s):"%rax");

最近の gas を入れれば xbegin/xend が使える