. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->自由讨论区
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  对训练营教程的一些建议_1  [待解决] 回复[ 1次 ]   点击[ 546次 ]  
answerooo
[帖 主]   [ 发表时间:2009-04-07 19:44 ]   [引用]   [回复]   [ top ] 
荣誉值:7
信誉值:4
注册日期:2007-09-02 22:36
训练营的教程正在更新,我在这里提出一些看法,以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,程序一应该比程序二的运行的快,不过实际结果是两个程序的运行时间差不多,考虑到编译器总是会把局部变量优化进寄存器,通过查阅汇编代码,果然如此。
abob
[第1楼]   [ 回复时间:2009-04-09 13:20 ]   [引用]   [回复]   [ top ] 
荣誉值:169
信誉值:0
注册日期:2008-08-19 16:07
再往下涉及到的具体课程有:计算机组成原理,微机原理,单片机,体系结构,数字电路,模拟电路等。 
----------
现在大学讲的不都是这些么!并且我觉得这样的课程是偏底层的学习,也只是计算机使用的其中一个方向。

再者,我觉得用汇编去研究C只是一种学习的方法,如王爽的汇编语言的综合研究。楼主说的学C一定要对应汇编学习,有严格的论证吗?还是仅仅看到了综合研究。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved