当前位置: 代码迷 >> 综合 >> CSAPP 第三版3.70习题答案
  详细解决方案

CSAPP 第三版3.70习题答案

热度:98   发布时间:2023-11-13 18:13:53.0

一、题目描述在这里插入图片描述

二、分析求解

  1. union 联合体知识:所有成员共用内存 互相影响 目的是节省内存
    union data{
              	        // 内存结构图 int n;              |__|  c   1B  char c;			    |__|  m   2Bshort m;            |__|      					
    }                       |__|  n   4B
    
  2. e1 和 e2 共享内存,所以答案为 0 8 0 8
  3. 逐条分析汇编指令
	mov 8(%rdi), %rax  // rax = up->e2.nextmov (%rax), %rdx  // rdx = up->e2.next->e1.pmov (%rdx), %rdx  // rdx = *(up->e2.next->e1.p)subq 8(%rax), %rdx  // rdx -= up->e2.next->e1.ymov %rdx, (%rdi)  // up->e2.x = *(up->e2.next->e1.p) - up->e2.next->e1.y
  1. 易错:(%rax) 表示rax存放的是内存地址-指针 (%rax) = *(rax) = M[rax] 一次间接寻址-指针解引用

union参考链接
习题参考链接1
习题参考链接2