これは簡単な質問だと思いますが、何も見つかりませんでした。私が書くなら
void bar()
{
{
void *rax = 0/* ...*/, *rbx = 0/* ... */;
asm volatile ("movq %0, %%rax; movq %1, %%rbx;" : : "m"(rax), "m"(rbx));
goto foo;
}
{
foo:
void* rax, *rbx;
asm volatile ("movq %%rax, %0; movq %%rbx, %1;" : "=m"(rax), "=m"(rbx));
// LOTS OF CODE
}
}
2 番目のブロック内の他のコードが実行される前に、rax/rbx の値をフェッチできることが保証されていますか?