gpt4 book ai didi

c - get_sp() 函数如何工作?

转载 作者:行者123 更新时间:2023-11-30 21:33:05 27 4
gpt4 key购买 nike

我目前正在练习C语言。

一切看起来都很合理,但是当我面对这些初始化和函数时

unsigned long get_sp(void) {
__asm__("movl %esp,%eax\n\t"
"and $0xff000000, %eax"
);
}

int (*fp)(char *)=(int(*)(char *))&puts;

我真的不知道这些行是什么意思。

什么是真实变量?它是什么类型? ...

有人可以深入解释一下吗?

最佳答案

首先,您定义一个返回 unsigned long 的函数 get_sp() 。该函数的内容是一些内联汇编,它获取堆栈指针地址,将其放入寄存器 eax 中,然后与 0xff000000 进行与运算。 IE:获取 eax 中的值,该值设置了堆栈指针地址的前 8 位中的任意一个。 eax寄存器用于返回值,因此返回这个屏蔽堆栈指针。

第二行将函数puts的地址分配给fp。puts 是一个返回 int 的函数,并需要一个 char * 输入。因此类型/名称 int (*fp)(char *)

在该行之后,您可以将 put 函数调用为 fp("hello");

关于c - get_sp() 函数如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37648018/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com