アトミックに値をインクリメントする単純なインターフェイスを作成しようとしています。私は次のことをしようとします(Cで)
void foo()
{
int counter = 0;
assembly_xadd(&counter);
printf("counter is %d\n");
}
カウンターは0です
xaddを適切に使用しているかどうかわからないアセンブリのコードは次のとおりです。
.global assembly_xadd
assembly_xadd:
PUSHL %ebp
MOVL %esp,%ebp
PUSHL %edi
MOVL $0x1,%eax
MOVL 0x8(%ebp),%edi
XADDL %edi,%eax
MOVL %edi,%eax
POPL %edi
MOVL %ebp,%esp
POPL %ebp
RET