汇编网首页登录博客注册
answerooo的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  

[2009-04-07 16:49] 对训练营教程的一些建议_1

训练营的教程正在更新,我在这里提出一些看法,以C语言的学习作为参考,希望对大家有所帮助,个人意见,欢迎讨论。 ^_^
        对于C这种中级语言的研究可以分为三个方面:
        1. C程序对应的汇编指令是什么。
        2. 标准C的一些规定和实现技术。
        3. C语言和编译器以及运行平台相关的内容。
        三方面并不是独立的,在研究一个具体问题时都会接触到。
        关于第一方面的学习:首先要有扎实的汇编功底,只要是认真学习了汇编的同学都应该能体会汇编的重要,很多人最初学习的是高级语言,之后一直往下接触到了汇编,在整个计算机体系中,我们掌握了汇编语言是不够的。
再往下涉及到的具体课程有:计算机组成原理,微机原理,单片机,体系结构,数字电路,模拟电路等。
建议的学习顺序:模拟电路、数字电路、单片机、微机原理、组成原理、体系结构。关于单片机和微机原理的先后顺序也有不同的意见,这两门课程讲述的都是一种具体的实现方式,可以同时进行,我认为单片机要简单一些,动手实践的机会也多一些,应该放在微机原理之前。
接下来我们应该学习的的是CPU的实现方式,每一条指令是如何被CPU执行的,CPU具体都做了什么动作,目前电路设计中最常用的硬件描述语言是Verilog,它的语法和C很相似,大家可以从简单的加法器学起,看一看一个加法器是如何被Verilog描述的。
上面两段说的很简略,我在一家IC设计公司,从事底层程序的编写和芯片设计,自然硬件相关的内容掌握的多一些,考虑到大部分同学以后从事应用程序的编写,尤其是没有机会接触IC设计,做为一个应用程序员掌握了汇编并对计算机体系结构有一个比较清晰的认识,已经可以使你比同事高出一筹、多一份自信了。
多说一点:掌握了汇编可以使你对机器的工作方式有一个清晰的认识,但不是全部,大家在单片机的课程中一定要多实践,多思考。一定有同学认为要学习的这些课程太多,何况还有很多软件课程,我所学的专业没有安排一门硬件课程,不过凭着兴趣还是还是看了一些书。至于CPU的实现,也不一定非要学习Verilog,只要有简单了解就行,毕竟大家不会去从事IC设计。有了这些基础,再回头看汇编语言又会有多一番的思考。
高级语言为我们屏蔽了很多东西,幸好还有汇编。TC里的S选项,可以把C代码转换为对应的汇编。从最简单的C程序开始,逐步了解函数的调用机制、分支结构、循环结构等。C中的很多疑惑,只要查阅它的汇编代码就可以得到解释,比如指针和数组的区别,如何优化C程序等,如果有条件,大家应该养成写一个C程序就查阅对应的汇编代码的好习惯。我曾经在自己公司的SOC上写过一个简单的程序,主要的代码如下:
U32 i;
For(i = 0; i < 65536; i++)
{
。。。。。。。。
}
大家知道,局部变量是存在于栈中的,第一次我把局部变量的分配地址设为访问周期为单周期的一块SRAM,第二次将局部变量分配到另一块访问周期为双周期的SRAM,因为程序要不停的读写变量i,程序一应该比程序二的运行的快,不过实际结果是两个程序的运行时间差不多,考虑到编译器总是会把局部变量优化进寄存器,通过查阅汇编代码,果然如此。
评论次数(2)  |  浏览次数(1664)  |  类型(默认类型) |  收藏此文  | 

[  游客   发表于  2009-04-07 21:09  ]

这么牛?给王爽的课程体系提建议!!
高人啊!看样子还要整个系列。呵呵。不过,我觉得你要是想让自己的思想展现,你应该自己去做些什么,比如说也写个教程。训练营肯定有自己的设计,你的思想应该不会被融合,在课程安排上有那较大的出入。

[  游客   发表于  2009-04-08 08:10  ]

说的不错,一看就不是俺这菜鸟级别的。不过,俺对硬件没啥兴趣,学习汇编就是为了能更好的理解计算机整个知识体系。

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码