编译原理不需要 操作系统 可以看看 计算机体系结构也可以看看 关键还是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。