上一页 1 ··· 3 4 5 6 7 8 9 10 下一页
摘要: 说明 本文给出杨辉三角的几种C语言实现,并简要分析典型方法的复杂度。 本文假定读者具备二项式定理、排列组合、求和等方面的数学知识。一 基本概念 杨辉三角,又称贾宪三角、帕斯卡三角,是二项式系数在三角形中的一种几何排列。此处引用维基百科上的一张动态图以直观说明(原文链接http://zh.wik... 阅读全文
posted @ 2014-06-05 12:53 clover_toeic 阅读(16246) 评论(0) 推荐(17) 编辑
摘要: 本文主要分享研究生期间所学到的一些科研和项目经验,实践部分偏重于硬件电路。点滴琐碎,还请见谅。一 项目所得1.1心得体会任何事物都要从最简单、最基本的构架入手,理解复杂的。——接触学习新东西时的指导思路。做理论要做做想想,边停边走;做工程则要不断推进,因为不做不出来。工程就是靠时间堆出来的,不在... 阅读全文
posted @ 2014-06-03 11:21 clover_toeic 阅读(5409) 评论(8) 推荐(21) 编辑
摘要: 6 调用栈实例分析 本节通过代码实例分析函数调用过程中栈帧的布局、形成和消亡。6.1 栈帧的布局 示例代码如下: 1 //StackReg.c 2 #include 3 4 //获取函数运行时寄存器%ebp和%esp的值 5 #define FETCH_SREG(_ebp, _esp) ... 阅读全文
posted @ 2014-05-29 16:40 clover_toeic 阅读(4518) 评论(0) 推荐(11) 编辑
摘要: 说明 本文通过目录和代码两个层面分析某产品xDsl驱动模块代码,将其精简为原始代码量的2%。一 完整代码 某产品xDsl驱动模块目录结构如下所示。其中,二级目录Lxx1通常为芯片厂家代码,Lxx2为自定义适配代码。 ├─L010 │ ├─include │ └─source ├─L020... 阅读全文
posted @ 2014-05-29 08:30 clover_toeic 阅读(1903) 评论(0) 推荐(7) 编辑
摘要: 5 函数调用约定 创建一个栈帧的最重要步骤是主调函数如何向栈中传递函数参数。主调函数必须精确存储这些参数,以便被调函数能够访问到它们。函数通过选择特定的调用约定,来表明其希望以特定方式接收参数。此外,当被调函数完成任务后,调用约定规定先前入栈的参数由主调函数还是被调函数负责清除,以保证程序的栈顶指... 阅读全文
posted @ 2014-05-28 16:02 clover_toeic 阅读(13433) 评论(13) 推荐(14) 编辑
摘要: 说明 本文参考MDU系列某产品OMCI模块现有代码,提取若干实例以说明目前的代码质量,亦可作为甄别不良代码的参考。 本文旨在就事论事,而非否定前人(没有前人的努力也难有后人的进步)。希望以史为鉴,不破不立,最终产出高质量的代码。一 质量现状 不考虑业务实现,现有的OMCI模块代码质量不甚理想。... 阅读全文
posted @ 2014-05-28 09:53 clover_toeic 阅读(1746) 评论(0) 推荐(5) 编辑
摘要: 程序的执行过程可看作连续的函数调用。当一个函数执行完毕时,程序要回到调用指令的下一条指令(紧接call指令)处继续执行。函数调用过程通常使用堆栈实现,每个用户态进程对应一个调用栈结构(call stack)。编译器使用堆栈传递函数参数、保存返回地址、临时保存寄存器原有值(即函数调用的上下文)以备... 阅读全文
posted @ 2014-05-27 17:01 clover_toeic 阅读(48447) 评论(11) 推荐(71) 编辑
摘要: 过程赋值:用于对reg型变量赋值,改变寄存器的值或为以后排定改变。 语法{阻塞性(blocking)赋值} RegisterLValue = [TimingControl] Expression;{非阻塞性(non-blocking)赋值}RegisterLValue Analysis &... 阅读全文
posted @ 2014-05-27 16:35 clover_toeic 阅读(17678) 评论(2) 推荐(2) 编辑
摘要: 分析以下代码中变量存储空间如何分配: 1 //MemSeg.c: 代码无意义,仅供分析用 2 #include <stdio.h> 3 #include <stdlib.h> //malloc函数声明位于<stdlib.h>或<cstdlib>头文件中 4 #include <string.h> 5 阅读全文
posted @ 2014-05-27 14:35 clover_toeic 阅读(1705) 评论(0) 推荐(0) 编辑
摘要: 在多任务操作系统中,每个进程都运行在属于自己的内存沙盘中。这个沙盘就是虚拟地址空间(Virtual Address Space),在32位模式下它是一个4GB的内存地址块。在Linux系统中, 内核进程和用户进程所占的虚拟内存比例是1:3,而Windows系统为2:2(通过设置Large-Add... 阅读全文
posted @ 2014-05-27 09:44 clover_toeic 阅读(34349) 评论(7) 推荐(42) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 10 下一页