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 ...
随机推荐
- MYCAT 配置(转)
server.xml配置 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mycat:se ...
- 【Yii2-CookBook】JSON 和 XML 输出
Web 和移动应用程序现在不仅仅只是用来呈现 HTML. 现在开发一个移动客户端,利用服务器 api 驱动前端,所有的用户交互都在客户端哪里.JSON 和 XML 格式通常用于序列化和传输结构化数据通 ...
- DevWebForm控件,触发用客户端事件
ClientInstanceName+".Raise"+"事件名", 例如: ClientInstanceName.RaiseValueChanged();
- Visual studio智能感知挡住了当前代码输入行
AssistX->Listboxes->Enable Visual Assist completion, suggestion and member list in .. 如果勾选了该项就 ...
- SQL总结系列
SQL总结系列 总结SQL基本知识.用法,并结合多年的应用对SQL有关的相关知识进行总结.希望这些分享能给大家带来一些帮助,如有不足或错误,请批评指正. 主要内容 1)编辑相关,包括:数据库的创建与删 ...
- Python入门4
函数 函数其实在日常的编码过程中,你都在使用,比如print().input().len()等函数,只不过这些都是python给你写好的内置函数,供你是用,内置的函数数量有限,想让python为我们做 ...
- chmod、chown、chgrp的意思
文件权限管理chown->change owner 改变文件所有者chown test install.log -将install.log这个文件的所有者改为test用户 chgrp->c ...
- 从数据库中导出excel报表
通常需要将后台数据库中的数据集或者是其他列表等导出excel 报表,这里主要引用了Apose.cells dll 类库, (1)直接上主要代码: protected void txtExport_Cl ...
- 01从c到c++
c++的发展历史 + 80年代贝尔实验室 本贾尼 + 83年 正式命名c++ + 87年 gnu制定了c++标准 + 92年 微软和IBM分别制定了c++标准 + 98年 ansi ISO 制定了标 ...
- ubuntu 彻底卸载软件
找到此软件名称,然后sudo apt-get purge ......(点点为为程序名称),purge参数为彻底删除文件,然后sudo apt-get autoremove,sudo apt-get ...