免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123
最近访问板块 发新帖
楼主: flightbird
打印 上一主题 下一主题

[函数] 计算函数大小/长度,移动到新位置并执行? [复制链接]

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11
21 [报告]
发表于 2005-12-28 17:30 |只看该作者
这里所讨论的技术全都不适用,因为代码(特别是某个函数代码)所涉及的最关键的问题是重定位

论坛徽章:
0
22 [报告]
发表于 2005-12-28 19:14 |只看该作者
原帖由 flightbird 于 2005-12-27 16:35 发表
为mcu做程序,所以希望不带c库。

另外 unsigned char *p = a; 应该编译不过去吧?



什么型号MCU,结构不一样的,方法也不一样。。。51的就不可以,他data和code分开的

论坛徽章:
0
23 [报告]
发表于 2005-12-28 21:58 |只看该作者
哪位解释一下, 什么是MCU?

论坛徽章:
0
24 [报告]
发表于 2005-12-28 23:04 |只看该作者
原帖由 Alligator27 于 2005-12-28 21:58 发表
哪位解释一下, 什么是MCU?



MCU 微控制器,也就是单片机。就是一个小CPU上外加一些资源例如ROM、ram等很容易组成小系统的家伙。常见的8位的有8051系列,PIC系列;16位的有TI的430系列,摩托罗拉的很多都是16位的。32位的有ARM系列。现在用处最多的就是8051系列。

    由于51的内部是哈佛结构并且资源很有限,所以编程时有很多值得注意的地方!例如用KEILC做51的程序,如果用函数指针的话,连接器就不能很好的做函数内部变量的可覆盖分析,它会按递归处理这些函数指针!需要自己再连接器上增加可覆盖参数。

[ 本帖最后由 王紫豪 于 2005-12-29 00:18 编辑 ]

论坛徽章:
0
25 [报告]
发表于 2005-12-28 23:56 |只看该作者
Thx

论坛徽章:
0
26 [报告]
发表于 2005-12-29 11:46 |只看该作者
原帖由 王紫豪 于 2005-12-28 23:04 发表



MCU 微控制器,也就是单片机。就是一个小CPU上外加一些资源例如ROM、ram等很容易组成小系统的家伙。常见的8位的有8051系列,PIC系列;16位的有TI的430系列,摩托罗拉的很多都是16位的。32位的有ARM系列。现 ...


我用瑞萨的r8c。

感谢 ktdid 和 mik,二位所用方法的原理基本一样,都利用了函数指针。在计算函数大小时用的方法不同,各有利弊。ktdid 的方法有个前提,即两个函数的位置相连,谁先谁后倒无所谓;mik 的方法在不同的cpu有不同的返回码,而且不能保证(ktdid的观点)。

用汇编很容易实现。有时候简单了反而强大:em11:

[ 本帖最后由 flightbird 于 2005-12-29 11:55 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP