好的。谢谢。

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。

回复