当前位置:  技术问答>linux和unix

这段代码应该怎么去理解?

    来源: 互联网  发布时间:2016-04-15

    本文导语:  int do_go (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[]) { ulong addr, rc; printf("hello"); return 0; if (argc usage); return 1; } addr = simple_strtoul(argv[1], NULL, 16); printf ("## Starting application at 0x%08lx ...n", addr); /*  * p...


int do_go (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
{
ulong addr, rc;
printf("hello");
return 0;
if (argc usage);
return 1;
}

addr = simple_strtoul(argv[1], NULL, 16);

printf ("## Starting application at 0x%08lx ...n", addr);

/*
 * pass address parameter as argv[0] (aka command name),
 * and all remaining args
 */
rc = ((ulong (*)(bd_t *, int, char *[]))addr) (bd, --argc, &argv[1]);

printf ("## Application terminated, rc = 0x%lxn", rc);
return 0;
}


这段代码是用来运行某地址内的二进制代码
具体调用时用命令 go 0x********
其中rc = ((ulong (*)(bd_t *, int, char *[]))addr) (bd, --argc, &argv[1]);
应该怎么去理解?

|


就是你的地址addr指向的一块代码啊!那就是该函数的函数体!如果你反汇编可执行文件就清楚了!举个例子,在下面的反汇编代码中:
[code=INIFile]
 08048504 :
 8048504:   55                      push   %ebp
 8048505:   89 e5                   mov    %esp,%ebp
 8048507:   b8 00 00 00 00          mov    $0x0,%eax
 804850c:   5d                      pop    %ebp
 804850d:   c3                      ret
[/code]
func函数的c语言定义如下:

int func (int argc)
{
   return 0;
}


那么我用如下的代码就是调用该位置的函数func:
ulong    addr;
addr = 8048504;
(int(*)(int)addr)(0x0f);

类似:
((ulong (*)(bd_t *, int, char *[]))addr) (bd, --argc, &argv[1])就是调用addr地址开始的代码段,而该代码段其实就是一个定义为:
ulong func(bd_t * bd, int argc, char *argv[])的函数;


仅仅是我的理解,可能有些出入!高手拍砖!



    
 
 

您可能感兴趣的文章:

  • 内核源代码树 怎么理解啊?
  • 交流一下Linux源代码的理解!
  • [源码分析]:怎么理解下面的代码的作用?
  • 求助!!关于两行代码的理解问题!请大虾近来看看!!(在线等待)
  • 求助!!关于两行代码的理解问题!请大虾近来看看!!
  • 内核中的timer是不是可以理解为多线程,我想对一段代码加锁,如何实现,有没有可用的内核函数?
  • 宏操作_ _copy_user_zeroing()的代码怎么理解?
  • [ 理解]下面代码中“|| “是什么意思?
  • linux内核代码 求理解 (2.6.36)
  • 文件复制时,进行限速的代码 理解
  • 代码如何理解···菜鸟初学···求高手帮忙
  • ARM I2S UDA1341TS 如何理解,代码不全 帮忙讲讲思路
  • 在 vi 中要替换第2列中的所有字符, 应该如何写替换代码呢?
  • 应该怎样学《莱昂氏UNIX源代码分析》
  • 简单!如果网页的内容为HTML标签和JAVASCRIPT代码,那应该将该文件保存为.jsp还是
  • 请教带定时器的,对高速运转的客户服务器(cs)系统的代码应该怎么调试。
  • 浙大的linux原代码应该怎么看!
  • 一个J2EE应用需要同客户端保持一个安全的(SSL/HTTPS)长连接,请问此部分的代码应该用什么J2EE component来实现,Session EJB or Servle
  • 我想在VC下编写代码再移植到linux下运行,我应该注意什么》??
  • 请帮我看看这段代码,应该很简单!!!!
  • 一段应该没有错的代码
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • javascript 添加到收藏夹和书签代码示例
  • 在JBuilder中,为什么编写的代码中,当代码出现关键字时,后面的部分代码就移位了,当在有关键字的那些代码行进行选择时,也会出现鼠标位
  • Python GUI编程:tkinter实现一个窗口并居中代码
  • 为什么两行代码间不加入其他代码就崩溃,而加入了日志代码后就不崩溃?
  • JSP中清空cookie代码参考
  • 在ubuntu8.10 新立得中安装anjuta,为什么没有代码提示功能,怎么做才有,还有自动代码补全和代码提示有什么区别,
  • Python获取网页编码的方法及示例代码
  • 到底怎么样的代码算是有效代码?请教了。。
  • HTML网页中的html body onload自动跳转方法介绍及自动跳转代码示例
  • 如果要研究源代码以提高自己,哪一个开放源代码的软件比较合适?
  • php通过socket_bind()设置IP地址代码示例
  • linux源代码的时间函数源代码
  • boost库lexical_cast不同用法代码参考
  • gdb的时候代码 next显示的代码乱了
  • 通过javascript库JQuery实现页面跳转功能代码
  • 源代码!源代码!
  • 使用libpcap读取tcpdump抓取的文件并解析c代码实例
  • 哪位会使用代码保护工具WingGuard来保护java代码?
  • HTML网页的Meta Refresh自动跳转方法介绍及Meta Refresh自动跳转代码示例
  • 如何得到C语言代码对应的汇编代码?
  • Linux c++虚函数(virtual function)简单用法示例代码
  • RedHat Linux是开放源代码的吗?如何能看见它的源代码,如何进行修改?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3