[英]Typecasting an address to Function pointer
我有来自u-boot,bootloader的特定代码,其中地址被类型转换为函数指针,但不确定执行该操作的目的
void (*kernel)(bd_t *, ulong r4, ulong r5, ulong r6,ulong r7, ulong r8, ulong r9);//prototype
kernel = (void (*)(bd_t *, ulong, ulong, ulong,ulong, ulong, ulong))images->ep;
是在第一条语句中调用r4,r5,r6,r7,r8,r9时初始化寄存器吗?
其中images-> ep是内存地址,bd_ t是bord信息结构。
谁能让我知道在函数指针中键入大小写地址的目的。
好吧,大概他们将在某个时候将该指针作为一个函数来调用。 原始结构条目的名称为ep
的事实说明了-可能代表“入口点”。 是否有类似的东西:
kernel(....) // appropriate arguments inserted
要么
(*kernel)(....)
在代码后面找到?
正如您提到的, images->ep
是“内存地址”,这大概意味着它是某种指针类型。 在标准C中,指针类型之间的转换需要显式转换(除非其中之一为void *
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.