问一下下这个在linux下编译(gcc -o app.out *.c),为什么总是提示
(.text+0x4): undefined reference to `_value”
#include “stdio.h”
long __attribute__((__stdcall__)) INTERLOCKED_DEC(long volatile* _value)
{
__asm__ __volatile__
(
“movl $_value, %ecx\n\t”
“movl $0xFFFFFFFF, %eax\n\t”
“lock xadd %eax, (%ecx)\n\t”
“dec %eax\n\t”
);
}
int main()
{
long count = 123;
printf(“count:%d\n”,count);
INTERLOCKED_DEC(&count);
printf(“count+1:%d\n”,count);
return 0;
}
(.text+0x4): undefined reference to `_value”
#include “stdio.h”
long __attribute__((__stdcall__)) INTERLOCKED_DEC(long volatile* _value)
{
__asm__ __volatile__
(
“movl $_value, %ecx\n\t”
“movl $0xFFFFFFFF, %eax\n\t”
“lock xadd %eax, (%ecx)\n\t”
“dec %eax\n\t”
);
}
int main()
{
long count = 123;
printf(“count:%d\n”,count);
INTERLOCKED_DEC(&count);
printf(“count+1:%d\n”,count);
return 0;
}
解决方案
40
“movl $_value, %ecx\n\t”
这句错了吧,C语言中的变量,不可以直接传到汇编中吧, 汇编中$后接的是立即数
这句错了吧,C语言中的变量,不可以直接传到汇编中吧, 汇编中$后接的是立即数