《大规模集成电路设计应用与实践.ppt》由会员分享,可在线阅读,更多相关《大规模集成电路设计应用与实践.ppt(27页珍藏版)》请在三一办公上搜索。
1、大规模集成电路设计应用与实践,代码阅读与实践Lecture 3主讲人:胡亚斌E-mail:,系列课程之,第二次课的回顾,关心代码阅读全周期(四个步骤)内发生的事源码,预编译,编译,汇编,链接,运行,修改源码了解目标文件,readelf,objdump 等工具的使用深入理解编译、链接了解程序员眼中的内存模型:堆 与 栈深入理解 HelloWorld 程序的全生命周期,2,代码阅读有哪些事,3,4,基本编程元素,课程内容,函数与全局变量,循环结构,goto语句,字符及布尔型表达式,do循环与整型表达式,基本编程元素,5,一个完整的程序,见本节课实验一原型代码可以参考教材随书关盘netbsdsrcb
2、inechoecho.c实验演示,理解 main 函数参数 argc 与 argv,6,头文件,用于函数、变量的声明。用#include 格式来引用标准库的头文件(编译器将从标准库目录开始搜索)。用#include“filename.h”格式来引用非标准库的头文件(编译器将从用户工作目录开始搜索)。规则和建议必须做头文件保护。在头文件中,尽课程使用前向声明,而不引用其他头文件,以防止头文件引用循环嵌套。建议头文件中只存放“声明”而不存放“定义”。,7,实例:头文件,8,/*CopyRightYabin Hu,CUG.2010,10,29.*this is a demo for header f
3、ile.*/#ifndef MY_INCLUDE_FILE_H/防止 my_include.h 被重复引用#define MY_INCLUDE_FILE_H#include/引用标准库的头文件#include“anotherheaderbyme.h”/引用非标准库的头文件void Function1();/全局函数声明class Box/类结构声明;#endif,函数与全局变量,9,VS2008类视图,10,基本概念,作用域 scope生命周期 life cycle,11,关注代码中的符号或名字,全局函数与全局变量具有外部链接(external linkage)的符号在OO编程中,定义在任何类
4、之外规则:在检查代码时,确保所有只用于单一文件的变量都声明为 static 的。,12,对变量名的分析,关注修饰符static(文件作用域,程序生命周期)extern(全局作用域,程序生命周期)实验演示,13,对函数的分析,了解函数功用的方法通过函数名猜阅读函数定义之前的注释猜测参数的意义观察函数被调用的方式和返回值阅读函数体代码查阅外部文档,14,循环结构,15,while循环,16,/打开一个文件得到其文件描述符File*fp=fopen(“a.txt”);while(c=getc(pf)!=EOF)putc(c,active);,/这个循环执行了多少次迭代char*p;while(0=*
5、p&*p=9),do-while的特殊用法,17,#define ABORT_PARSE do global_command=0;yyerrok;if(!symtab_context.empty()symbol_table:set_scope(symtab_context.top();symtab_context.pop();if(interactive|forced_interactive)YYACCEPT;else YYABORT;while(0),for循环次数,18,for(int i=0;i 0;i-)for(dp=readdir(dd);dp!=NULL;dp=readdir(dd
6、),下列for 语句各执行多少次循环,for循环与效率,19,for(i=0;iN;i+)if(condition)DoSomething();elseDoOtherthing();,if(condition)for(i=0;iN;i+)DoSomething();elsefor(i=0;iN;i+)DoOtherthing();,break 和 continue,break用于退出当前循环,用于循环和switch语句中。continue意味着跳过该语句与循环末尾的所有语句,直接执行下一次循环。,20,无限循环,21,for(;).,while(1).,可通过break语句,goto语句退出,
7、课后作业,浏览wiki上关于作用域 与 生存周期 的解释http:/zh.wikipedia.org/zh/%E4%BD%9C%E7%94%A8%E5%9F%9Fhttp:/zh.wikipedia.org/zh/%E5%8F%98%E9%87%8F_(%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1)从课程网站上下载 lifecycle.cpp 文件写出 a,b,c,d 四个对象的作用域和生存周期;编译运行该程序,写出运行结果,并加以分析。,22,Perl,程序设计语言花儿朵朵之,23,拉里 沃尔,24,拉里沃尔(Larry Wall,1949年3月10日)是程序员、
8、系统管理者、语言学家和作家,生于加拿大卑诗省邓肯市。他最为人知的地方,是他设计的编程语言Perl。,Perl的起源,Perl的起源多少有些“意外”。因为其创始人拉里沃尔并不是有意的要编写一门编程语言,事实上,拉里沃尔也不是一位程序员,而是系统专家。当 时拉里沃尔正在负责一个项目,由于要完成某项工作,尽管拉里沃尔曾想用 awk 来完成,但其并不能满足他的需求,结果就是一门新的编程语言要诞生了。,25,Perl的设计哲学-简单,同Objective-C、PHP、C+等语言一样,生于80后的Perl同样有C语言的血统,同样具有强大的能力及灵活性,相比于那些高级语言 而言,Perl语言直接提供泛型变量
9、、动态数组、Hash表等便捷的编程元素。但真正让程序员们兴奋的还是Perl的简单哲学。Perl的简单首先表现在其代码量上,相比于其他语言,面对一个稍复杂的问题,用Perl解决也许几行就足以!而编译Perl程序则更加简单,你根 本不需要一些特殊的指令。由于Perl继承了C语言的很多语法规则,所以它的结构非常容易理解(Perl是一种无类型语言),也正由于此,使得其他语言的 程序员能够很快的理解Perl。当然,Perl的编辑器是开源的免费软件,使用Perl不必担心费用。而且Perl能在绝大多数操作系统运行,可以方便地向不同操作系统迁移。在7月的编程语言排行榜这里有支足球队一文中,我们也将Perl作为后方的主力,而作为后卫球员,基本要求就是要处理球简单。,26,Thank you,