深入理解计算机系统【三】

  机器级表示。今天断断续续看了2小时,粗读了这章一半的内容。

  计算机底层是01;但可读性不好,所以有了汇编语言。但汇编语言可读性也很差,所以又有了编译器,形成了各种贴近人类语言的Java、C之类的。

  还一直以为自己干的是把人语言翻译成计算机呢,原来也是个中间层。

  为什么要理解汇编?我想到了平常工作时的需求理解。现场的需求先和现场实施说,实施再找我们这边的设计,最后才到我们开发这里。这样子的需求往往就失真了许多。做出来的效果往往就不是很好,我一般都会采用开发完后多次发现场验证的方式来解决。

  汇编在计算机中的角色可能就相当于现场实施吧,编译器翻译我们的代码,但不一定是效率最高的写法,所以得看懂编译后的代码才能针对性优化代码性能。然而日常工作并没用到,工作中的系统似乎最大的性能问题还是SQL执行过慢。

  历史故事是我最喜欢看的,Intel是做处理器的,性能是平均18个月性能就会提升一倍,已经持续50多年,这是计算机革命基础。

  指令集,似乎也是一种抽象,用的最多的指令抽象成指令集?内存里面则是虚拟地址,抽象成一个巨大的字节数组。

  数据存放在寄存器或内存,操作数的可能有三种:立即数、寄存器、内存引用。嗯,,可能就是平常写代码时头疼的引用对象出现的原因吧。

原文地址:https://www.cnblogs.com/weixin-tt/p/11567958.html

时间: 2024-07-31 11:27:51

深入理解计算机系统【三】的相关文章

读书笔记《深入理解计算机系统》(第三版) 概述

<深入理解计算机系统>第三版刚出来不到一周,便买下了这本书:之所以阅读本书,一方面源于网友推荐以及豆瓣不错的评分.评价:另一方面是针对本人非科班出身,计算机系统相关的知识相对比较薄弱,很多情况下此类知识需要工作之外的时间自学.补涨此类知识,而该书从程序员的角度进行阐述.展示了计算机系统的各个层面的知识以及其影响程序的正确性.性能.实用性,更容易引起某些上层和下层的知识接轨理解,以期望可以融汇各方面的知识. 明白程序的运作过程,编写更好的软件程序,对底层过程了解以完善自己知识体系和提高信心.接下

《深入理解计算机系统(第三版)》第二章 信息的表示和处理

<深入理解计算机系统(第三版)>第二章 信息的表示和处理 ??计算机本身是由处理器和存储器子通过系统组成.在核心部分,我们需要方法来表示基本数据类型,比如整数和实数运算的近似值.然后,我们考虑机器级指令如何操作这样的数据,以及编译器又如何将C程序翻译成这样的指令.接下来,研究几种实现处理器的方法,帮助我们更好的了解硬件资源如何被用来执行指令.理解了编译器和机器级代码,我们就能了解如何通过编写C程序以及编译它们来最大化程序的性能.本章主要使我了解了如何表示和执行应用程序,通过一些技巧,来写出安全

《深入理解计算机系统(第三版)》第三章

3.1 程序编码 1.计算机系统使用了多种不同形式的抽象,对于机器级编程来说,两种抽象尤为重要: 指令集体系结构(ISA):定义了处理器状态.指令的格式,以及每条指令对状态的影响 机器级程序使用的存储器地址是虚拟地址:提供的存储器模型看上去是一个非常大的字节数组 2.反汇编器使用的指令命名规则与GCC生成的汇编代码使用的有区别.反汇编省略了指令结尾的q,给call和ret指令添加了q后缀. 3.可执行程序反汇编和对.c反汇编产生的代码有差别.对于可执行文件的反汇编,链接器将代码的地址移到了一段不

速读《深入理解计算机系统(第三版)》总结

速读<深入理解计算机系统(第三版)>总结 第一章 计算机系统漫游 读完第一章的心情实在难以述说,在此写下这一章自己的一点学习经历及感想 仔细读完了这本书的第一章的内容,之前零零散散的学过一些计算机系统知识,也接触过编程,但是对于这两者并没有什么太多的思考,它们底层是什么联系也不太了解.当我读完这一章的内容时,我的内心是非常激动的,解除了很多之前学习中所残留下来的困惑,虽说是残留,但十分致命,令我一直处于一知半解的状态,我第一次的深刻觉得计算机是一个如此紧密的工具,我跟着作者的思路,从给出计算机

深入理解计算机系统9个重点笔记

引言 深入理解计算机系统,对我来说是部大块头.说实话,我没有从头到尾完完整整的全部看完,而是选择性的看了一些我自认为重要的或感兴趣的章节,也从中获益良多,看清楚了计算机系统的一些本质东西或原理性的内容,这对每个想要深入学习编程的程序员来说都是至关重要的.只有很好的理解了系统到底是如何运行我们代码的,我们才能针对系统的特点写出高质量.高效率的代码来.这本书我以后还需要多研究几遍,今天就先总结下书中我已学到的几点知识. 重点笔记 编写高效的程序需要下面几类活动: 选择一组合适的算法和数据结构.这是很

《深入理解计算机系统》 Chapter 7 读书笔记

<深入理解计算机系统>Chapter 7 读书笔记 链接是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载(货被拷贝)到存储器并执行. 链接的时机 编译时,也就是在源代码被翻译成机器代码时 加载时,也就是在程序被加载器加载到存储器并执行时 运行时,由应用程序执行 链接器使分离编译称为可能. 一.编译器驱动程序 大部分编译系统提供编译驱动程序:代表用户在需要时调用语言预处理器.编译器.汇编器和链接器. 1.将示例程序从ASCⅡ码源文件翻译成可执行目标文件的步骤 (1)运

《深入理解计算机系统》第六周学习笔记

第四章 处理器体系结构 (一)知识点总结 一.Y86指令集体系结构 1.Y86处理器状态类似于IA32,有8个程序寄存器: %eax.%ecx.%edx.%ebx.%esi.%edi.%esp.%ebp.处理器的每个程序寄存器存储一个字.%esp被入栈.出栈.调用和返回指令作为栈指针. 2.3个一位的条件吗:ZF.SF.OF,它们保存最近的算术或逻辑指令所造成影响的有关信息.程序计数器PC存放当前正在执行指令的地址. 3.程序状态的最后一个部分是状态码stat,它表明程序执行的总体状态 4.Y8

深入理解计算机系统(4.2)---硬件的魅力

引言 这个系列已经很久没更新了,记得上一篇博文已经是三月份了,实在是抱歉.最近业余时间没有以前充裕了,因此更新一篇博文已经变成了一种奢侈.记得以前刚开始写的时候,最多的时候LZ一天写过3篇博文,现在想想,往事如梦. 好了,好不容易写一次,就不多说废话了,本文主要介绍一下硬件以及HCL语言的内容. 从疑问开始 首先,在介绍本文的内容之前,我们先来思考一个看似简单,却实际比较“高深”的问题.众所周知,计算机归根结底是在和0.1打交道,那么到底0和1是如何被计算机记住的呢? 怎么样,这个问题是不是有点

深入理解计算机系统读书笔记一 ---&gt; 计算机基础漫游

一.程序编译的不同阶段. 通常我们是以高级程序开发易于阅读的代码,我们通过语法规则推断代码的具体含义.但是计算机执行代码的时候就需要把代码解析成既定的可执行问题,计算机是如何处理的呢?这里以C语言hello.c文件为例来说明中间过程. #include <stdio.h> int main() { printf("hello world!\n"); } 先上张图. C语言源程序----预处理解析头文件和函数  --- 编译器解析成汇编语言 ---   翻译机器语言指令,打包

深入理解计算机系统(3)

深入理解计算机系统(3) 本文我们主要讲关于数据的的表示方式:原码,反码和补码. 本文在写作过程中,参考了园中的这篇文章<原码,反码,补码详解>,特此声明. 一原码 计算机中是使用二进制来表示数据的,对于C语言这样的强类型语言,每一个数值类型,都有其范围,例如一个int类型,在32位机器上,其表示的范围如下: 最小值 最大值 有符号整数 -2147483648 217483647 无符号整数 0 4294967295 而如果我们定义了一个int类型,给其的赋值,超出了这个范围,则会出现问题.一