请教什么意识啊 # define EnterPWDN(clkcon) ((viod(*)(int))0x20)(clkcon)

kongzhongyihao 2009-03-08 07:27:31
# define EnterPWDN(clkcon) ((viod(*)(int))0x20)(clkcon)
请教什么意识啊?
...全文
181 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
kanney_yu 2011-07-12
  • 打赏
  • 举报
回复
因为前面有8条跳转语句每条语句是4字节,如下:
b ResetHandler ;地址为0x00000000
b HandlerUndef ;handler for Undefined mode ;0x00000004
b HandlerSWI ;handler for SWI interrupt
b HandlerPabort ;handler for PAbort
b HandlerDabort ;handler for DAbort
b . ;reserved
b HandlerIRQ ;handler for IRQ interrupt
b HandlerFIQ ;handler for FIQ interrupt ;0x0000001c

;@0x20 ;下面一条语句的地址为0x00000020
b EnterPWDN ; Must be @0x20.
yf453937252 2010-02-03
  • 打赏
  • 举报
回复
有谁分析了bootloader中的这段啊,为什么是0x20这个地址
扛一肩记忆 2009-03-08
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 clc0925 的回复:]
这个其实就是C中所说的宏定义!若在程序中出现EnterPWDN(clkcon)那他就先用((viod(*)(int))0x20)(clkcon) 替换!然后再进行运算!
[/Quote]
你说的一点意义都没有,楼主的本意不是问宏定义的问题(他明显知道),而是函数指针,这里涉及到函数指针的地址,就是0x20,另一方调用的时候会到此处调用
clc0925 2009-03-08
  • 打赏
  • 举报
回复
这个其实就是C中所说的宏定义!若在程序中出现EnterPWDN(clkcon)那他就先用((viod(*)(int))0x20)(clkcon) 替换!然后再进行运算!
fairchild811 2009-03-08
  • 打赏
  • 举报
回复
OX20这个地址上的函数转换为(void*)int型的,再宏定义为前面的
  • 打赏
  • 举报
回复
EnterPWDN(clkcon) 接受地址0x20的函数指针,棘突做法,楼主得把代码贴全才好判断。
yangchaomef 2009-03-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 windriver3 的回复:]
这样写有什么实际意义吗。0x20谁能知道这个地址是什么啊?呵呵
[/Quote]
这样写可能是一个约定,一方将函数指针写在地址0x20处,另一方去读取。
windriver3 2009-03-08
  • 打赏
  • 举报
回复
这样写有什么实际意义吗。0x20谁能知道这个地址是什么啊?呵呵
野男孩 2009-03-08
  • 打赏
  • 举报
回复
嗯,就是把地址0x20强制转换为函数指针void(*)(int),并且参数为clkcon.
dongpy 2009-03-08
  • 打赏
  • 举报
回复
参数是clkcon,入口地址是0x20的函数调用。
fox000002 2009-03-08
  • 打赏
  • 举报
回复
void 与 int 是函数返回值与 形参, 是对地址进行强制函数类型转换的,clkcon 是实参

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧