编译高手帮帮忙

Nisj 2003-09-15 09:58:06
偶想做如下的工作:
将编译生成并将下载到Flash中的应用程序“其中一个函数”调到内存中去执行。(这样做是逼不得已的,也有大侠告诉我可以用汇编写一个函数,但是我又不会汇编,偶想编译C语言得到的结果应该可以借用一下)。已经知道我的应用程序编译以后的地址都是绝对的。这个函数的二进制代码我应该可以知道它的开始地址。我也可以用编辑器看生成的文件。我用的编译器是cc68000.
我认为“一个函数”的编译的结果就是一段二进制代码。这样理解应该是笼统的。哪位大侠解释一下这段二进制代码的组成?又怎么判断这个函数二进制代码结束的地方?
另外这段代码运行起来以后,应如何获得各个参数值?
我的程序平时是从Flash上直接取指令的。如果我想到内存中去执行一个函数。我将它的二进制代码拷贝到内存中,然后跳到内存中这个地址开始运行,又如何返回到
Flash中?
...全文
49 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
W32API 2003-09-16
  • 打赏
  • 举报
回复
在单片机看来。。。
所有的存储空间都会被定义到一个连续的存储地址。。。
你不需要可以去管他在哪里执行,所有数据和代码都是全局的(没有访问权限限制)。
具体函数的位置你不需要关心,在编译阶段,编译器会帮你搞定。
当然,你要把你设想的要求告诉编译器。
比如,哪些数据是你想在初始化阶段要安排在什么位置的。。。

atiace@sina.com 个人
li@sml-intl.com 公司
W32API 2003-09-15
  • 打赏
  • 举报
回复
已经知道我的应用程序编译以后的地址都是绝对的??
ROM 文件偏移地址吧?在执行时可以被重定位到 RAM 某个地址段。

这个函数的二进制代码我应该可以知道它的开始地址??你知道 FLASH
我用的编译器是cc68000?MOTO 的芯片?

二进制代码的组成?就是 CODE 和 DATA 。二进制代码的结束要自己去分析判断,从编译器以及源文件对空间的分配入手。

又如何返回到 Flash 中?
函数调用,BOOTCODE 之后会有一段程序将需要定位到内存的数据拷贝过去,这个是可以在源程序中定义的。你定义之后,编译器会修正函数的地址。在使用中的程序指针是整个存储空间的指针。

其它的请详述。。。
Nisj 2003-09-15
  • 打赏
  • 举报
回复
编译的得到的是ROM文件偏移地址.

函数名实际上就是一个函数的实际地址.我可以打印这个名字来得到这个地址,但是得到这个函数的结束就难了.

对的,我用的是Motorala的芯片.

二进制代码是有CODE和DATA.但是,是不是一个函数编译的就是CODE而没有DATA?那参数值从哪里得到呢?

我可以将程序拷贝到内存中去,然后跳到某个内存地址上,我又如何做才能让程序在内存中运行完毕以后回到Flash上,继续正确的运行下去呢?

谢谢!楼上的大俠能否留下一个联系方式?谢谢!!
nsj1214@163.net 13574832287

21,453

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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