zoukankan      html  css  js  c++  java
  • 《深入理解计算机系统》读书笔记

    二进制补码的算术运算满足代数环的特性,编译器可以很安全的把一个常量乘法转化为一些列的移位和加法;

    程序员和编译器不能用表达式(x-y<0)来替代(x<y)因为前者可能产生溢出。甚至于也不能用表达式(-y<-x)来替代,因为在二进制补码中表示负数和正数的范围是不对称的。
    算术溢出是造成程序错误和安全漏洞的一个常见根源;

    程序阶段:预处理,(hello.i)->编译(hello.s),->汇编(hello.o),->链接 hello.c->hello.i->hello.s->hello.o->可执行程序

    pirntf函数存在于一个名为printf.o的单独的预编译好了的目标文件中,这个文件以某种方式合并到我们的**.o程序之中,由链接器来处理;

    几个疑问:1、一个switch语句是否总是比一系列的if-else高效?
    2、指针引用比数组索引更有效吗?
    3、while循环比for循环更有效吗?
    4、为什么将循环求和的结果放到一个本地变量中,与将其放到一个通过引用传递过来的参数中相比,运行速度快很多?

    文件是对i/o设备的抽象表示;虚拟存储器是对主存和磁盘I/O设备的抽象表示;进程则是对处理器,内纯和I/O设备的抽象表示,进程是OS对一个正在运行的程序的一种抽象;

    当执行与pc相关的寻址时,程序计数器的值是跳转指令后面的那条指令的地址,而不是跳转指令的本身的地址;这种惯例可以追溯到早期实现,当时的处理器会将更新程序计数器作为执行指令的第一步;




  • 相关阅读:
    【C++ 学习笔记】 Vector
    【AWS】 AWS Free Usage Tier
    【C++ 学习笔记】 MFC CEdit
    【MySql】MySql安装和ODBC设置
    【C++ 学习笔记】 变量转换
    【Perl学习笔记】列表和数组
    【C++ 学习笔记】 值传递
    【Java 学习笔记】 MyEclipse各种细节
    【NLP】 向量空间模型
    【Linux】 Cygwin操作总结
  • 原文地址:https://www.cnblogs.com/HuaiNianCiSheng/p/3074720.html
Copyright © 2011-2022 走看看