专栏首页HeaiKunCSAPP第三章(1)

CSAPP第三章(1)

处理器发展历程

计算机的发展是很迅猛的,短短的几十年,社会发生了天翻地覆的变化。这也离不开处理器芯片的高速发展。下面就简单的罗列一下处理器芯片的发展历程。

8086:           1978年,29K个晶体管
80286:          1982年,134K个晶体管
i386:           1985年,275K个晶体管
i486:           1989年,1.2M个晶体管
Pentium:        1993年,3.1M个晶体管
PentiumPro:     1995年,5.5M个晶体管
Pentium/MMX:    1997年,4.5M个晶体管
Pentium II:     1997年,7M个晶体管
Pentium III:    1999年,8.2M个晶体管
Pentium 4:      2000年,42M个晶体管
Pentium 4E:     2004年,125M个晶体管
Core 2:         2006年,291M个晶体管
Core i7:        2008年,781M~1,4G个晶体管
...

机器级代码

机器级的代码也就是汇编了,之前上学的时候学过一点ARM汇编,其实在Intel处理器上也都差不多。

我们的C程序先是转换成汇编代码,然后才转换成机器指令,最后在机器上运行。 x86-64的机器代码和C代码的差别也是相当大的,一些通常对C语言程序员隐藏的处理器状态都是可见的:

  • 程序计数器:给出将要执行下一条指令在内存中的地址。
  • 整数寄存器包含16个命名位置,分别存储64位值。
  • 条件码寄存器保存着最近执行的算术或逻辑指令的状态信息。
  • 一组向量寄存器可以存放一个或多个整数或浮点数值。

关于Intel汇编的代码后缀如:

movl movw movq ...

字节:后缀为b 大小为1个字节 字 :后缀为w 大小为2个字节 双字:后缀为l 大小为4个字节 四字:后缀为q 大小为8个字节 单精度:后缀为s 大小为4个字节 双精度:后缀为l 大小为8个字节

访问信息

CPU包含有16个64位的通用目的寄存器。指令可以对16个寄存器的低位字节中的数据进行操作。在内存中存放的数据使用寻址操作。

常见的数据寻址方式:

  • 立即(数)寻址
  • 直接寻址
  • 间接寻址
  • 寄存器寻址
  • 寄存器间接寻址
  • 相对寻址
  • 基址寻址
  • 变址寻址

等各种寻址方式。 这里注意一下立即数:直接出现在指令中的数,不用存储在寄存器或存储器中的数,每个立即数由一个8位的常数循环右移偶数位得到。

然后就是对数据的操作,加减乘除还有数据的搬移等操作,这些简单的操作支撑起整个工程的运行,不得不说真的很强大。

小结

CSAPP第三章主要讲的就是程序的机器级表示,看了前面这一小部分主要主要就是要理解程序具体是怎么执行的,程序的执行过程中,CPU到底干了些什么活。其实汇编语言才是真正的在操作CPU干活,汇编是执行效率最快的编程语言了,C语言也是先转换成汇编然后转换成机器指令码,所以C语言的执行效率很高就是这个原因。

注:对于CSAPP(深入理解计算机系统)的总结可能不是很详细,建议去看原书。

本文分享自微信公众号 - HeaiKun(hhk-develop),作者:hehk

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-11-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 是先学会游泳还是先下水?

    看到这句话,大家是不是都是反对这个观点的?对的,这个观点是错误的,但是这个错误的观点,在我们生活中却时时上演着。

    HeaiKun
  • 存储器层次结构介绍

    这里先说一下存储器系统: 寄存器 -----> 高速缓存 -----> 主存储 存储器对程序的性能有着巨大的影响,程序的运行就是对数据的不停的计算和搬移,其中最...

    HeaiKun
  • CSAPP之计算机系统漫游

    什么是计算机系统?计算机系统是由硬件和系统软件组成的,它们共同工作来运行应用程序。如下一个hello程序:

    HeaiKun
  • Python3快速入门(十四)——Pan

    pandas.read_csv(filepath_or_buffer, na_values='NAN', parse_dates=['Last Update']...

    py3study
  • Tomcat到底能承受多少并发,并发量计算方法

    一、经典公式1: 一般来说,利用以下经验公式进行估算系统的平均并发用户数和峰值数据

    框架师
  • php弹出提示框的是实例写法

    php中弹出对话框的方法如下,一般,在提交信息后需要弹出对话框提示,之后可以自动关闭对话框,弹出对话框有下面集中方法,其实都是利用javascript中的ale...

    砸漏
  • tf.reverse()和tf.transpose()

    很显然可以看出,axis=[3]的时候也就是在最里面那一层进行reverse,axis=[2]的时候就是在倒数第二层进行reverse,那么就是对两个三维数组分...

    于小勇
  • Python3快速入门(十五)——Pan

    如果要将自定义函数或其它库函数应用于Pandas对象,有三种使用方式。pipe()将函数用于表格,apply()将函数用于行或列,applymap()将函数用于...

    py3study
  • Clang vs Other Open Source Compilers

    Building an entirely new compiler front-end is a big task, and it isn't always c...

    望天
  • Excel 实例:单因素方差分析ANOVA统计分析

    如果看不到此选项,则可能需要先安装Excel的分析工具包。这是通过选择 Office按钮> Excel选项> Excel 中的加载项或 从Excel 开始...

    拓端

扫码关注云+社区

领取腾讯云代金券