今天在qq群中,有人提到这个问题。希望各位dx回答下。 下面是我的看法: 从arm的init代码来看,重要的工作就是初始化堆栈,而一般教科书上都说的c的运行需要堆栈。这似乎看起来是很合理的。 但是,我有点想不明白,通过汇编编译后的c程序和本身就是汇编代码的程序在功能上应该可以完全相同的吧!而在嵌入式开发中,一般用host-target的方式开发。在host端生成了bin的二进制代码,down到target,此时target是不管你以前的c还是汇编的。mcu只知道从0x0运行(一般的话),只要有办法将host这边生成的bin写到target端的0x0,而且保证在0x0这个地址所存放的是进行系统初始化的代码(此代码功能与用汇编写的init想同),此时不是也能达到想同的效果么? 所以,我觉得如果不能用c来写初始化代码的话,原因应该在host端的c编译器,在其对c代码进行link的阶段。 希望各位多指正,多讨论。不吝感谢! |