我没有汇编的经验,但这是我正在研究的内容。如果我在通过指针调用函数时遗漏了任何基本方面,我希望能够得到反馈。
例如,我想知道是否应该恢复
以下是我目前的代码,它可以正常工作:
例如,我想知道是否应该恢复
ecx
, edx
, esi
, edi
。我了解它们是通用寄存器,但我无法确定它们是否需要被恢复?在调用后是否需要进行任何清理工作?以下是我目前的代码,它可以正常工作:
#include "stdio.h"
void foo(int a, int b, int c, int d)
{
printf("values = %d and %d and %d and %d\r\n", a, b, c, d);
}
int main()
{
int a=3,b=6,c=9,d=12;
__asm__(
"mov %3, %%ecx;"
"mov %2, %%edx;"
"mov %1, %%esi;"
"mov %0, %%edi;"
"call %4;"
:
: "g"(a), "g"(b), "g"(c), "g"(d), "a"(foo)
);
}