boot loader能全部用C程序编写吗

来源:互联网 发布:域名dns劫持检测 编辑:程序博客网 时间:2024/06/10 17:48
在《什么是boot loader》一文中我抛出了一个问题,这个问题如下:

我们说boot loader通常采用汇编和C语言相结合来编写的,那能不能全部用C语言来进行编写呢?为什么?

对于这一问题的答案是:不能。C程序中所有的代码都是以函数的形式出现的。可能有人要说在C中也可以嵌入汇编代码,能不能用这种方式来实现整个boot loader呢?再看看题目,这里只考虑所有的代码只能是以函数的形式出现。那C程序中函数调用要一个什么样的环境呢?堆栈!我们写C程序时在函数名的后面,就是用花括号将代码括起来的,开始的花括号其实可以理解为有一段汇编代码(具体细节以后会有文章进行解释)对堆栈进行操作。那堆栈从哪来呢?显然,堆栈是一块内存区,也就是说我们用C程序写代码之前,必须保证内存已经初始化好了、可以用了。回忆一下,我们在《什么是boot loader》一文中提到,SDRAM内存芯片的初始化是boot loader中很重要的一步。也就是说,我们必须保证初始化好了SDRAM内存芯片后,才能进行C函数调用。因此,完全用C语言来实现boot loader是不可行的。

转载至:
http://yunli.blog.51cto.com/831344/181630

0 0
原创粉丝点击