<< 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 が使える