内联汇编 FreeBSD 中的 gettimeofday
gettimeofday in inline assembly FreeBSD
- 对不起我的英语。
- 感谢您的每一个回答。
我在 C 和内联汇编中有以下代码,应该调用函数:int gettimeofday(struct timeval *tp, struct timezone *tzp);
val = (struct timeval*)malloc(sizeof(struct timeval));
zone = (struct timezone*)malloc(sizeof(struct timezone));
__asm__("push [=10=];"
"push %2;"
"push %1;"
"movl 6, %%eax;"
"int [=10=]x80;"
:"=r"(val)
:"r"(val),"r"(zone)
:"%eax");
问题是,我不知道为什么我需要这一行 "push [=11=];"
并且我的老师说,我的论点顺序不正确,它起作用只是运气。
我应该如何更改此代码以使其正确?为什么会有 "push [=11=];"
是否正确?
所以,感谢 Daniel Kamil Kozar 我发现了删除 malloc-s 的问题。我的老师对命令有点正确,但它也在 malloc-s 中。 Malloc 只是用 "garbage" 提供内存,所以 calloc 没问题。我将区域设置为零值,我可以将 push [=10=];
移动到其他 2.
下
- 对不起我的英语。
- 感谢您的每一个回答。
我在 C 和内联汇编中有以下代码,应该调用函数:int gettimeofday(struct timeval *tp, struct timezone *tzp);
val = (struct timeval*)malloc(sizeof(struct timeval));
zone = (struct timezone*)malloc(sizeof(struct timezone));
__asm__("push [=10=];"
"push %2;"
"push %1;"
"movl 6, %%eax;"
"int [=10=]x80;"
:"=r"(val)
:"r"(val),"r"(zone)
:"%eax");
问题是,我不知道为什么我需要这一行 "push [=11=];"
并且我的老师说,我的论点顺序不正确,它起作用只是运气。
我应该如何更改此代码以使其正确?为什么会有 "push [=11=];"
是否正确?
所以,感谢 Daniel Kamil Kozar 我发现了删除 malloc-s 的问题。我的老师对命令有点正确,但它也在 malloc-s 中。 Malloc 只是用 "garbage" 提供内存,所以 calloc 没问题。我将区域设置为零值,我可以将 push [=10=];
移动到其他 2.