好的。谢谢。 sent from my mobile. On Apr 11, 2014 8:34 AM, "胡震宇" <andyhuzh...@gmail.com> wrote:
> 编译原理不需要 操作系统 可以看看 计算机体系结构也可以看看 关键还是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。 > -- 您收到此邮件是因为您订阅了 Google 网上论坛的“广州 GNU/Linux 用户组”论坛。 要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到gzlug+unsubscr...@googlegroups.com。 要向此网上论坛发帖,请发送电子邮件至 gzlug@googlegroups.com。 通过以下网址访问此论坛:http://groups.google.com/group/gzlug。 要查看更多选项,请访问 https://groups.google.com/d/optout。