红联Linux门户
Linux帮助

一直以来困扰我的一个问题,比较深入~~

发布时间:2007-03-09 10:16:43来源:红联作者:casio1374633
我是学电子的.学习单片机的时候.深知单片机识别的是2进制码.我们用keil或者intel自带的汇编软件,使用他们规定的汇编语言或者C语言写程序.再通过烧写器烧写进单片机的存储器里.就算大功告成了.

现在有个很大的疑问使我从windows转到linux,但是还是不能很好的解决.因为windows不公开源代码,linux可以学习内核.但是我看了内核以后发现基本都是用C或者汇编写的,这个我还是很好理解的.但是我的疑问就在这里,任何硬件识别的都只是2进制数.单片机时候用特殊的软件将汇编转换成2进制码.现在一台裸机,如何做到识别C程序和汇编程序啊?也就是问,linux在编写的时候用C和汇编,但是他是如何让机器识别的,并且成为操作系统?
文章评论

共有 5 条评论

  1. casio1374633 于 2007-03-10 23:43:22发表:

    有点不能这么理解吧?首先我看过linux本人说他也是通过GCC1。4版本编写的,并查到说编译器有18年的研究,并且是一个很深奥的东西。

    现在有个问题就是,首先,如果是单片机的话,在上电运行的第1个机器周期,肯定还是从0000H地址开始的,只不过开始通过一种总线将各个地址连接。电流的走动和水流似的。。

    但是硬盘是物理地址,按照磁针走扇区读数据,我认为一上电的第一个机器周期就应该是读取硬盘的第一个物理地址。

    我提问的就是C语言编写的内核。linux本人说通过GCC转换,至少转换成了HEX文件。那么这个转换器的存储位置在哪里呢?我的猜测。1:在BIOS里面。2:就是说安装盘(光盘介质)自带,因为硬盘安装也是必须先通过DOS吧。。

    不知道有没有达人能够解释一下。。。

    另:我问问,这里面的朋友有多少是学习电子信息工程的阿?我学的这个专业,感觉怎么像万金油?!啥都要学。。。还有就是。关于数学的方向问题,大二时候,计算机专业的学离散数学,我们学的是复变函数和几分变换。。虽然我现在工作是靠单片机吃饭(个人觉得我自己还有些潜力来可以挖掘)。本来打算转linux嵌入式的,不过好像我没学过离散数学的人,可能要学这个就不光是看内核源代这么就能学会吧?

    还有就是我学习的信号与系统还有数字信号处理还不错,但是我通讯原理学的不好,会matlab(不过比较浮浅),对了解linux 有用吗?看到有人说搞DSP,还是说搞ARM,我也不知道哪个更适合我。。。。不过说实话,我编程不咋地~~呵呵~~是不是学习嵌入式的一般都是计算机专业的阿?

  2. zhanghongfu 于 2007-03-10 07:35:14发表:

    有一个交叉编译的技术.可以在一个主机里交叉编译适合目标主机(你文中所说的单片机)CPU的二进制代码.再写到你的目标主机里就行了.

  3. casio1374633 于 2007-03-09 18:54:15发表:

    好快就沉了阿~~没有人回答吗?

  4. casio1374633 于 2007-03-09 11:27:23发表:

    我也找过些资料了.,说这也是一门独立的技术,叫编译原理,就是专门做编译器的..我个人想了想,可能是这么个样子,首先编译linux的是intel的一种编译器.他可能存在与BIOS里面又或者CPU自带.反正是肯定有这么一个编译器存在,然后无论是光盘启动还是硬盘启动,他都从存储媒介的第一个存储点开始读起,又或者通过编译器找到main程序开始读起..然后一步一步执行操作系统.

    又有一种猜测,可能编译器是随操作程序绑在一起的,在操作系统里面都带有编译器,这个编译器可能是intel的又或者是其他的,编译器放在最前面,然后机器扫描的时候先扫描到编译器,接着通过编译器开始扫秒程序.

    希望达人讲解~`

  5. Addfun 于 2007-03-09 10:40:42发表:

    程序的问题无法解答,或许这个要等苏小小等人来了,linux很多都是用c来写的