csapp

chapter 2

  1. image

ps:再加上操作系统就可以抽象为虚拟机。

  1. 小数转二进制

  2. image

  3. image

  4. 一个数是无符号数另一个数也要转化为无符号数。

  5. 有符号数=补码

  6. image

    1. \(x_{w}^{t}\) 是有符号加法是否溢出,有符号数逆元若 \(x=TMin_w,-x_w^t=TMin_w\)

    2. \(-x_{w}^{u}\) 是无符号数逆元,同时也可表示加法是否溢出

  7. 大端:从低底知道高地址。X86-64系统是小端储存。

  8. \(==\) 比较的是二进制位,有符号数和无符号数加法和乘法都是相同的。

  9. IEEE 754标准

    1. Sign bit:一位1表示negative,0表示positive。
    2. Exponent(阶码),规范化是从0000 0001~1111 1110
    3. Significand

image

eg: image

image

image

image

  1. 向偶数舍入

    1. 浮点数操作,同样的xxx100就相当于使0.5的情况,向上一位偶数舍入。
    2. 循环小数也像这种规律舍入即可。
  2. 只要有浮点数,就要按照浮点数的运算法则。

  3. 浮点数加法结合律通常会不太true,而且浮点数上溢出只会到无穷。

chapter 3

  1. 程序员可以获取的状态

    1. Program counter:下一条指令的地址,存储在寄存器rip中。
    2. Register file:大量使用的程序数据。
    3. Condition codes:储存最近的算术或逻辑运算的状态信息,用于条件分支中。
    4. Memory:存储可按字节寻址的数组,程序和数据以及栈(堆)
    5. ps:cache不可见
  2. objdump -d 反汇编

  3. image

  4. 函数传参的顺序:rdi rsi rdx rcx,rsp栈指针rax返回值

  5. b一个字节w两个字节l四个字节q八个字节。

  6. 内存中的值不可以直接读入到内存中。

  7. CMOVE 条件传送

    1. 无符号数
      1. CMOVEA/CMOVNBE
      2. CMOVAE/CMOVNB
      3. CMOVNC 不仅为 CMOVC 进位
    2. 有符号数
      1. lgeno:小于大于相同否溢出。
      2. CMOVS/CMOVNS 带符号/不带符号
  8. 数据传送:替换后4个字节,高位字节自动补0,这就是为啥没有movzlq。特殊的符号扩展ctlq将eax扩展到rax。image

  9. image

  10. 递归 image

  11. 缓冲区溢出攻击防御方法:

    1. 避免溢出漏洞。
    2. use 系统级的protection.
      1. 随机的栈偏移。
      2. 非可执行代码段。
    3. 编译器use“栈金丝雀”。
  12. image

  13. 移位量是由%cl的低logw(w为移位数据值的位长度)决定。

  14. test cmp cf zf sf of

chapter 5

  1. image

  2. image
    在同一个地址 image

  3. 一般有用的优化:

    1. 代码移动
    2. 复杂运算简化,use移位运算。
  4. image

  5. image

  6. image

  7. image

  8. 循环展开最多展开到延迟*容量。

  9. 左边作为关键路径的原因:右边的mul可以提前准备好(假设是足够长的循环)。 image

  10. image

  11. image

  12. image

chapter 6

  1. image
    image

  2. image

  3. image

  4. 顺序快,随机慢。image

  5. image
    image

  6. image

  7. 需要记忆image

  8. image

  9. image

  10. image

  11. image

chapter 7

  1. image

  2. imageimageimage

  3. imageimageimageimage

image
5.
image
image
image
image

  1. 开头地址不为0,说明是可执行file。image

  2. 相对地址:PC32,即使是负数 image绝对地址:32 直接把地址写出来

  3. image

  4. image

chapter 8

  1. image
    image
    image
    image

  2. image
    内核代码区可以不保存。
    image
    PID 返回当前进程的PID
    PPID 返回父进程的PID
    image
    image
    image
    image
    必须要触发exit,wait才可以过去,waitpid wait特定的指定进程。
    image
    fork:一次调用两次返回
    exit:一次调用零次返回

chapter 9

  1. image当存进内存的是物理页号,再次盘里的就是磁盘地址。

  2. image
    image

  3. image

image

  1. 外部和内部碎片的区别

  2. image
    image

  3. image
    image
    image
    image

posted @ 2024-06-16 18:29  _daybreak  阅读(4)  评论(0编辑  收藏  举报