#include <stdio.h>
int add(int a, int b)
{
return a + b;
}
int asm_compare_one(int a)
{
_asm {
mov edx, a
cmp edx, 1
je val1
xor eax,eax
jmp val0
val1:
mov eax, 1
val0:
}
//eax中存放返回值
}
int main()
{
int a, b;
scanf("%d %d", &a, &b);
printf("%d\n", add(a, b));
printf("%d\n", add(a + b, b));
printf("%d\n", asm_compare_one(a));
return 0;
}
用IDA反汇编如下;
看到了吧,调用printf函数前,是push eax,所以C语言的函数返回值,存放在eax中。环境是32位的。
如果是64位,那么就是存放在eax和edx中了,高位在edx,低位在eax。