计算机科学基础知识之(六):理解栈帧

作者:linuxer 发布于:2015-3-12 13:00 分类:基础学科

本文以一个简单的例子来描述ARM linux下的stack frame。

本文也是对tigger网友问题的回复。

阅读全文>>

标签: stack frame 栈帧

评论(8) 浏览(6184)

计算机科学基础知识(五): 动态链接

作者:linuxer 发布于:2015-3-10 18:15 分类:基础学科

本文以类似hello world这样的简单程序为例,描述了动态连接的概念。第二章描述了整个动态链接的大概过程,随后的两章解析了程序访问动态库中的数据和调用动态库中函数的过程。

注意:阅读本文之前需要先了解relocatable object file静态链接以及动态库和PIC这些内容。

阅读全文>>

标签: dynamic link 动态链接

评论(0) 浏览(3050)

计算机科学基础知识(四): 动态库和位置无关代码

作者:linuxer 发布于:2015-3-6 9:39 分类:基础学科

本文主要描述了动态库以及和动态库有紧密联系的位置无关代码的相关资讯。首先介绍了动态库和位置无关代码的源由,了解这些背景知识有助于理解和学习 动态库。随后,我们通过加-fPIC和不加这个编译选项分别编译出两个relocatable object file,看看编译器是如何生成位置无关代码的。最后,我们自己动手编写一个简单的动态库,并解析了一些symbol Visibility、动态符号表等一些相关基本概念。

本文中的描述是基于ARM MCU,GNU/linux平台而言的,本文是个人对动态库的理解,如果有错误,请及时指出。

阅读全文>>

标签: 动态库 PIC 位置无关代码

评论(0) 浏览(6138)

计算机科学基础知识(三):静态库和静态链接

作者:linuxer 发布于:2015-2-16 15:15 分类:基础学科

本文是编译、链接和加载系列文章中的第二篇,主要描述静态链接

阅读全文>>

标签: 静态库 静态链接

评论(2) 浏览(4445)

计算机科学基础知识(二):Relocatable Object File

作者:linuxer 发布于:2015-2-9 19:17 分类:基础学科

一个合格的c程序员(也可以叫做软件工程师,这样看起来更高大上,当然,我老婆心情不好的时候总是叫我“死打字的”,基本也能描述这份职业,呵呵) 需要理解编译、链接和加载的过程,而不是仅仅关注c语言的语法和词法。本文主要以此为切入点,描述linux系统下,一个普通的hello world程序的生命历程,并借机灌输一些程序编译时和运行时的基本术语和概念。当然,由于我本人是一个linuxer,因此借用linux来描述这些知 识会方便些,但是对于计算机科学而言,这些东西概念上是类似的,只是实现细节不同而已(windows程序员或者其他程序员可以阅读本文哦)。

本 文也是阅读了Computer System,A programmer’s perspective的第七章的一个读书笔记,方便日后查阅。注:Computer System,A programmer’s perspective绝对是一本值得反复阅读的书籍,强力推荐。

阅读全文>>

标签: Object Relocatable File

评论(10) 浏览(7561)

傅立叶级数(Fourier Series)和周期现象

作者:linuxer 发布于:2014-8-7 20:09 分类:基础学科

如果你仔细观察,工作和生活中充满了周期现象:旁边linux driver工程师在调试audio driver的时候播放的1kHz的正弦信号,周末去公园游玩,游船推开水面的波纹,硬件工程师调试硬件电路的时候,示波器显示出来的晶振方波信号……

所谓周期现象具体包括时间上的周期现象和空间上的周期现象。1kHz的audio当然是时间上的周期信号,而水面的波形就是空间上的周期现象。对于空间上的周期现象,实际上就是一个pattern不断的重复。

对 于一个普通的人,我们可以感知时间的流逝,也可以感知空间的变化(我们可以通过眼睛、耳朵、触觉等build in在身体上的sensor来感知时空中的周期现象),因此,周期现象对于我们来讲就像呼吸一样自然。然而,你是否愿意从另外一个侧面来感知世界?那个世 界就是频域(frequency domain)的世界。描述时间上的周期现象我们使用频率(frequecy)这个词,也就是一秒重复的次数。

Can you feel frequency of the world?

阅读全文>>

标签: 傅立叶级数 Fourier Series

评论(11) 浏览(4542)

基本电路概念之(二):什么是电容?

作者:linuxer 发布于:2014-6-17 19:48 分类:基础学科

我儿子对电路板有一种近乎疯狂的痴迷,每次周末加班的时候,他总是恳求我带他一起到公司,就是为了能够看一看电路板、看一看电路焊接过程。为了不影 响工作,我只能是找一些废旧的电路板,加上从蜗窝同学那里搜刮来的电烙铁给小朋友进行电路焊接演示。废旧电路板上有不少的器件,于是问题少年的问题就来 了,芯片里面有什么?电路板是几层的?电容的内部结构是什么?……于是乎钳子、起子、剪刀等工具不断的登场,我们家里就是一片狼籍,各种电子元件支离破 碎……

其实打开一个普通的电解电容,里面的结构很简单,两个铝箔,一个绝缘纸卷在一起放到一个圆柱形的容器中,两个铝箔引出电容器的两个引 脚。那么它的具体功能是什么呢?当然,给小朋友解释很简单:就是用来存储小电子的,不过作为工程师,我们当然不能那么肤浅,本文的主题就一个:详细描述电 容的概念。

作为一个“数学控”,不拽上点数学总是觉得少了点什么。section 2描述了理解后续内容需要的数学基础,理解这个章节的内容需要单变量微积分和基本向量的知识。如果阅读者觉得痛苦,那么不要犹豫,直接跳过这个章节。 section 3描述了一些物理学的基础,如果这也不是你的菜,那么我建议你记住计算平板电容之间电场的公式即可,其他的可以无视。section 4主要描述电容的概念,这是本文的核心内容。

阅读全文>>

标签: 电容

评论(4) 浏览(6534)

计算机科学基础知识(一):The Memory Hierarchy

作者:linuxer 发布于:2014-6-16 19:54 分类:基础学科

一、前言

最近一个问题经常萦绕在我的脑海:一个学习电子工程的机械师如何称为优秀的程序员?(注:本文作者本科学习机械设计,研究生 转到电子工程系学习,毕业后却选择了系统程序员这样的职业)。经过思考,我认为阻挡我称为一个优秀程序员的障碍是计算机科学的理论知识。自然辩证法告诉我 们:理论源于实践,又指导实践,她们是相辅相成的关系。虽然从业十余年,阅code无数,但计算机的理论不成体系,无法指导工程面具体技能的进一步提升。

计算机科学博大精深,CPU体系结构、离散数学、编译器原理、软件工程等等。最终选择从下面这本书作为起点:

s2547828

本文就是在阅读了该书的第六章的一个读数笔记,方便日后查阅。

阅读全文>>

标签: Memory Hierarchy cache 存储体系

评论(26) 浏览(14499)

基本电路概念之(一):什么是电压?

作者:linuxer 发布于:2014-5-16 10:40 分类:基础学科

我有一个奇葩儿子(4岁),经常问一些奇葩的问题。比如:为什么电子带负电?什么是电压?电路板是怎么生产的?发动机的内部结构是什么?……总之, 各种问题层出不穷。有一天回家,他正和他妈妈一起看几张医学的CT片子(他妈妈是医生),他妈妈正详细向他解释该病人颅部血管病变问题,各种专业术语丝毫 也没有浇灭儿子的热情,那认真的劲头,我当时就震惊了。

为了应付我这个奇葩儿子,为了始终维持爸爸的高大形象,我不得不对这个世界有更深层次的思考……这次的主题是:什么是电压?电池为什么能提供电压?

阅读全文>>

标签: 电压

评论(8) 浏览(7369)

Copyright @ 2013-2015 蜗窝科技 All rights reserved. Powered by emlog