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


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

    程序员和编译器不能用表达式(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相关的寻址时,程序计数器的值是跳转指令后面的那条指令的地址,而不是跳转指令的本身的地址;这种惯例可以追溯到早期实现,当时的处理器会将更新程序计数器作为执行指令的第一步;




  • 相关阅读:
    MySQL数据库优化的八种方式(经典必看)
    HTTP状态码详解
    一周学会HTML----Day03常用标签(下)
    一周学会HTML----Day02常用标签(上)
    SEO优化---10分钟学会建立高转化率的网站关键词库
    C# 命名的基本约定【转】
    arraylist是接口list的实现类
    API
    new与malloc区别(转)
    获取系统时间
  • 原文地址:https://www.cnblogs.com/HuaiNianCiSheng/p/3074720.html
Copyright © 2020-2023  润新知