编译原理不需要 操作系统 可以看看  计算机体系结构也可以看看 关键还是C语言

于2014年4月8日 15:25:26,Bill Chen (CHEN, Zhechuan)写到:
2014-04-05 20:31 GMT+08:00 iZobs <ivincent...@gmail.com
<mailto:ivincent...@gmail.com>>:

    看过arm的bootloader-uboot。弄个arm开发板做过实验。觉得uboot作的工
    作还是挺多的。像个小系统。Bill有兴趣,推荐你也hack一下。我觉得mcu
    裸机的main和有操作系统的main他们前后工作还是挺不一样。mcu裸机的
    main从汇编讲仅是一个标量,不叫main也是ok。一个简单main函数调用前一
    般是初始化cpu寄存器,看门狗,栈地址,中断。。调用后一般是循环执行
    main,或nothing。上面是小弟的一点拙见。


uboot还没有时间来折腾啊!时间被我浪费得太多了。

对于这类代码,我感觉,我还要补点课才能看懂。有什么好课程推荐?我在主贴
里面提到的问题,是不是主要补上《操作系统》和《编译原理》就能开始逐步理解
了?(我不是CS学生,恳请各位指点)

MCU裸机的main(),从汇编上来说,我觉得,应该是一个goto的标志物所在吧。
反正,程序指针(PC)要走过前面的一堆初始化之后再会跳转到这里来执行相应
函数的。
因为MCU编程里面的main()多数是循环执行的,所以,多数情况下是可以不用关
心main()执行完毕之后的动作的。
但是,如果一定要关心这步动作,那么,我是应该从哪里知道,编译之后的代
码,大概是在哪里执行相应函数的?
(一般用于防止系统跑飞的时候,就要考虑到这些问题了)

MCU中,函数main()调用后,一般是循环执行内部函数体,所以在MCU程序里面,
可以经常见到如下的代码:
void main(void)
{
    /* codes .... */
    while(1) {
         /* codes .... */
    }
}


Best Regards,
Bill Chen

--
您收到此邮件是因为您订阅了Google网上论坛中的“广州 GNU/Linux 用户组”论坛。
要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到
gzlug+unsubscr...@googlegroups.com
<mailto:gzlug+unsubscr...@googlegroups.com>。
要发帖到此论坛,请发送电子邮件至gzlug@googlegroups.com
<mailto:gzlug@googlegroups.com>。
通过http://groups.google.com/group/gzlug访问此论坛。
要查看更多选项,请访问https://groups.google.com/d/optout。

--
您收到此邮件是因为您订阅了 Google 网上论坛的“广州 GNU/Linux 用户组”论坛。
要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到gzlug+unsubscr...@googlegroups.com。
要向此网上论坛发帖,请发送电子邮件至 gzlug@googlegroups.com。
通过以下网址访问此论坛:http://groups.google.com/group/gzlug。
要查看更多选项,请访问 https://groups.google.com/d/optout。

回复