我试图在程序集中实现一个函数,其中第一个参数是输入值,第二个参数是返回值。我只是尝试将返回值设置为输入值。
我已经编写了一个小的C程序来调用此函数。
C代码:
#include <stdio.h>
extern void f1(int,int*);
int main() {
int z1 = 0;
int z2;
scanf("%d", &z1);
f1(z1,&z2);
printf("A1: %i\n",z2);
return 0;
}
汇编代码:
f1:
push ebp
mov ebp,esp
mov eax, [ebp+8]
mov [ebp+12],eax
pop ebp
ret
输出应等于输入,但它是一个“随机”负整数值,例如“ -5870340”或“ -3303956”。
答案 0 :(得分:2)
由于要传递指针,因此需要取消引用以修改值:
f1:
push ebp
mov edx, [ebp+12]
mov eax, [ebp+8]
mov [edx], eax
pop ebp
ret
因此,捕获指针的值,然后将第一个参数移至其指向的位置。