打印

编译器:怎么让地址连续?去掉多余的自动代码?

[复制链接]
1390|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
457878|  楼主 | 2012-7-10 10:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
编译器:PICC16
目的:Bootloader,将编译出来的代码放到“连续的低地址空间”
现象:编译后看program window,地址不连续,分成了三个地址:0 ~ 007A( 启动代码) , 06AF~ 07FF(BootLoader) 0D00~0D1F(Flash存储数据)
问题:1. 如何去掉编译器自动生成的启动代码?
        2.  如何让编译出来的地址连续?
沙发
457878|  楼主 | 2012-7-10 10:40 | 只看该作者
如果用@定义绝对地址,又不知道该定义多大的地址值,一个一个去计算,还不如转汇编了...汇编就是连续的。
但汇编不能调用c函数,Flah,uart等驱动都是C写的,很麻烦!有没有好办法?

使用特权

评论回复
板凳
yewuyi| | 2012-7-10 11:57 | 只看该作者
1、自己写启动代码库文件
2、修改连接文件

以上两条一般在C编译器中已经处理好了,用户也能修改,但修改涉及到大量C语言、C编译器等的基础知识,很多人只会写C指令,所以出现看那个如同看天书的现象,没办法,只能自己去学习那些基础知识

使用特权

评论回复
地板
yewuyi| | 2012-7-10 11:59 | 只看该作者
如果不是必须,建议不要修改,用C语言就要了解和熟悉它,不能总是用自己理解的那些汇编的习惯来强迫C语言遵守你的原则,显然是反其道而行之。。。

使用特权

评论回复
5
457878|  楼主 | 2012-7-10 12:09 | 只看该作者
4# yewuyi

没有办法的事啊,BootLoader必须这样,要熟汇编就好办了,只懂C啊

PICC16好像不支持“链接文件”,要使地址连续,真不好办了。

使用特权

评论回复
6
yewuyi| | 2012-7-10 12:24 | 只看该作者
bootload一般很少用C写,基本都是汇编

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

269

主题

883

帖子

3

粉丝