免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1373 | 回复: 4
打印 上一主题 下一主题

[Linux] 大家怎么看待这段代码??? [复制链接]

论坛徽章:
2
2015年迎新春徽章
日期:2015-03-04 09:57:09C
日期:2016-10-25 16:17:59
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-10-30 17:24 |只看该作者 |倒序浏览
本帖最后由 shaohui973 于 2013-10-30 17:24 编辑

最近在想,如果程序自己预测到了不可恢复的错误,会导致程序后续的运行都不可靠,那么让程序本身自己去重新引导。

想问问现实项目中有这样的应用没???

示例代码如下:

//test.c
-------------------------------------------------------------------------------
#include <stdio.h>
int main()
{
     int a = 1;
   
     printf("a = %d.\n",a);
     sleep(2);                      //等待上述打印完成,否则会段错误。
     __asm__("jmp 0x8048370";
   
     return 0;
}

--------------------------------------------------------------------------------
gcc test.c -o test -e 0x8048370

论坛徽章:
7
2015年亚洲杯之约旦
日期:2015-03-05 17:03:522015亚冠之山东鲁能
日期:2015-09-29 13:01:2115-16赛季CBA联赛之四川
日期:2016-01-18 15:47:0215-16赛季CBA联赛之广夏
日期:2016-02-24 11:47:1515-16赛季CBA联赛之辽宁
日期:2016-11-01 09:45:4115-16赛季CBA联赛之青岛
日期:2017-02-15 10:02:182016科比退役纪念章
日期:2017-02-16 17:25:35
2 [报告]
发表于 2013-10-30 19:30 |只看该作者
恐怕做不到吧,裸机的话可能,但是如果存在系统,会直接给你蹦段错误地把。
你所说的引导应该是调用内核程序来重新引导系统或者重新引导本程序,但你jmp是个短跳转,同样达不到你的目的。
况且操作系统就是封装硬件跟芯片的难于操作,自己错做不当更容易出错lollol

论坛徽章:
2
2015年迎新春徽章
日期:2015-03-04 09:57:09C
日期:2016-10-25 16:17:59
3 [报告]
发表于 2013-10-30 21:52 |只看该作者
回复 2# linggang_123


    不是啊,我链接的时候指定了入口地址,程序会被加载在这个地址。如果我重新让PC指回这个入口地址,那么就可以实现实现应用程序的自己重新引导。

    我自己机器上测试过的,可以实现永久循环打印。


   忘了说了,测试过程中,还需要关闭OS的程序加载随机偏移开关,在proc文件系统下的叫randomize_xxx来着,具体的忘了,哈。

论坛徽章:
2
2015年迎新春徽章
日期:2015-03-04 09:57:09C
日期:2016-10-25 16:17:59
4 [报告]
发表于 2013-10-30 21:56 |只看该作者
回复 2# linggang_123

至于这个跳转的,由于测试代码少,近距离跳转就可以了。如果是打项目工程的话,可以使用长跳转,或者设置lr,然后来个ret。


   

论坛徽章:
2
2015年迎新春徽章
日期:2015-03-04 09:57:09C
日期:2016-10-25 16:17:59
5 [报告]
发表于 2013-10-30 21:58 |只看该作者
还有,至于设计到硬件操作方面的,可以在用户程序的入口处,首先去将硬件复位一把,然后才开始后面的初始化工作。这样,理论上应该可以做到.)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP