CSAPP学习笔记(第一,二章)
1:文本文件指的是ASCII码文件,二进制文件指的是除文本文件以外,其他文件。
2:区分数据对象的唯一判别方法是数据的上下文。
3:描述一下一个hello.c文件的处理过程。首先hello.c文件我们叫做源代码,经过预处理 gcc -E hello.c -o hello.i 处理一些宏,#define的预定义等,我们可以在hello.i的最底部找到我们helloworld的简单几行代码,编译之后得到汇编,gcc -s hello.c -o hello.s ,然后我们的汇编指令经过汇编就对应一条条机器码了。链接阶段实际上会将我们的hello.o文件和printf.o文件等链接到一起去执行。
4:计算机的硬件可以分为4大部分:
(1):总线:贯穿与整个系统的一组电子管道,携带信息字节并且在各个部件之间传递。通常总线被设计成传输定长的字节块。即“字”。
(2):I/O设备:输入输出设备,例如鼠标键盘,显示器,磁盘等。
(3):主存:又叫做程序执行的舞台,在处理器执行程序时,用来存放程序和程序用到的数据,(DRAM)
(4):处理器:中央处理器,又称中央处理单元,处理器的核心是寄存器,在任何时刻,寄存器始终指向主存中某条机器语言指令。它的基本操作有以下4个,加载,存储,操作和跳转。
5:大多数计算机使用8位的块,或者字节,作为最小的可寻址的的存储器单位,而不是在存储器中访问单独的位,机器级程序将存储器视为一个非常大的字节数组,称为虚拟存储器,存储器的每个字节都由唯一的数字来标识,称为它的地址。所有可能的集合称为虚拟地址空间,这个虚拟存储空间只是一个展现给机器级程序的概念性映像,实际的实现是将随机存储器,磁盘存储器,特殊硬件和操作系统软件结合起来,为程序提供看上去统一的字节数组。
6:计算机在存储器中按照从低有效字节到最高有效字节存储,即最低有效字节在前面的方法称为小端法,反之最高有效字节在前面的方法称为大端法。
7:c语言中的移位操作。移位操作分为左移和右移,左移几位就将最高位几位移出去,后面补0,右移分为逻辑右移和算术右移,逻辑右移是指将低位移出去,然后高位补0,但是算术右移是将低位移出去,高位补最高位,举个例子:
x:10110001 x<<2 : 11000100 x>>2(逻辑):00101100 x>>2(算术):11101100
c语言并没有明确规定使用哪种右移符号,几乎所有的编译器/机器组合都采用的是算术右移,许多程序员也会使用算术右移。
但是java对如何右移进行了明确的定义,表达式x>>k会将x算术右移k个位置,x>>>k会将x做逻辑右移 。
版权声明:本文为博主原创文章,未经博主允许不得转载。
CSAPP学习笔记(第一,二章)的更多相关文章
- CSAPP学习笔记 第一章 计算机系统漫游
Ch 1.0 1.计算机系统是由硬件和系统软件组成的 2.本书阐述了计算机组件是如何工作的以及执行组件是如何影响程序正确性和性能的. 3.通过跟踪hello程序的生命周期来开始对系统的学习. #inc ...
- linux 第三周读书笔记-----第一二章 20135334赵阳林
第一章 Linux内核简介 1.1 Unix的历史 由于Unix系统设计简洁并且在发布时提供源代码,所以许多其他组织和团体都对它进了进一步的开发. Unⅸ虽然已经使用了40年,但计算机科学家仍然认为它 ...
- [core Java学习笔记][第一二三章基本语法]
基本语法 1 Java 简单的类型 1.1 一些常量 正无穷大 Double.POSITVE_INFINITY 负无穷大 Double.NEGATIVE_INFINITY 不存在 Double.NaN ...
- 《Linux内核设计与实现》 第一二章学习笔记
<Linux内核设计与实现> 第一二章学习笔记 第一章 Linux内核简介 1.1 Unix的历史 Unix的特点 Unix很简洁,所提供的系统调用都有很明确的设计目的. Unix中一切皆 ...
- C++Primer第5版学习笔记(二)
C++Primer第5版学习笔记(二) 第三章的重难点内容 这篇笔记记录了我在学习C++常用基本语法的学习过程,基本只记录一些重难点,对概念的描述不是一开始就详尽和准确的,而是层层深入 ...
- 《Java核心技术·卷Ⅰ:基础知识(原版10》学习笔记 第5章 继承
<Java核心技术·卷Ⅰ:基础知识(原版10>学习笔记 第5章 继承 目录 <Java核心技术·卷Ⅰ:基础知识(原版10>学习笔记 第5章 继承 5.1 类.超类和子类 5.1 ...
- 《Java编程思想》学习笔记(二)——类加载及执行顺序
<Java编程思想>学习笔记(二)--类加载及执行顺序 (这是很久之前写的,保存在印象笔记上,今天写在博客上.) 今天看Java编程思想,看到这样一道代码 //: OrderOfIniti ...
- Hibernate学习笔记(二)
2016/4/22 23:19:44 Hibernate学习笔记(二) 1.1 Hibernate的持久化类状态 1.1.1 Hibernate的持久化类状态 持久化:就是一个实体类与数据库表建立了映 ...
- C#可扩展编程之MEF学习笔记(二):MEF的导出(Export)和导入(Import)
上一篇学习完了MEF的基础知识,编写了一个简单的DEMO,接下来接着上篇的内容继续学习,如果没有看过上一篇的内容, 请阅读:http://www.cnblogs.com/yunfeifei/p/392 ...
随机推荐
- 数据库中Schema和Database有什么区别
在MySQL中创建一个Schema好像就跟创建一个Database是一样的效果,在SQL Server和Orcal数据库中好像又不一样. 目前我只能理解,在mysql中 schema<==> ...
- 知识积累:CA详解
所有证书有多种文件编码格式,主要包括: CER编码(规范编码格式):是BER(基本编码格式)的一个变种,比BER规定得更严格DER编码(卓越编码格式):是BER(基本编码格式)的一个变种, 比BER ...
- C++工程目录架构
项目目录结构的问题基本上是个仁者见仁,智者见智的问题,只要自己用着顺手,使用什么样的目录组织结构是没有什么大碍的.当然如果项目很大,参与的人员很多,那么合理的组织一下目录结构还是会有很大的益处的.不同 ...
- DSP中.gel文件的作用
GEL是CCS提供的一种解释语言,使用该语言写出的GEL,函数具有两在功能,一是配置CCS工作环境,二是直接访问目标处理器DSP(包括DSP软/硬仿真器).用户可以使用GEL函数完成类似于宏操作的自动 ...
- Inno Setup怎样创建一个自动申请管理员身份运行的快捷
如果你使用的是 Unicode 版本的 Inno Setup,那么以下是更为专业的解决方法. 这是 mlaan 提及的再一种方法. QUOTE( CodeAutomation3.iss) ...
- ionic 启用sass
转入ionic项目目录,命令行下执行:ionic setup sass 提示编译器未装: You have specified Ionic CI to set up sass.However, you ...
- 5. Longest Palindromic Substring
Given a string S, find the longest palindromic substring in S. You may assume that the maximum lengt ...
- 非阻塞socket调用connect, epoll和select检查连接情况示例
转自http://www.cnblogs.com/yuxingfirst/archive/2013/03/08/2950281.html 我们知道,linux下socket编程有常见的几个系统调用: ...
- flash flex 程序出现错误 Error #2032
解决思路参考: http://www.cnblogs.com/enjoyprogram/archive/2012/06/21/2557615.html 有可能是这种情况: 状况:在安装flshbuil ...
- 用ADO.NET存入数据库
点击按钮存入登录名和密码: const string connstr = @"data source=USER-20160705UW\JSQL;initial catalog=Test;in ...