
csapp
java coder
这个作者很懒,什么都没留下…
展开
-
csapp 2.61习题
一、题目描述二、分析求解运算优先级 ~>!>算术>移位>&>|A. !~xB. !xC. !~(x|(~0xff))D. !(x>>(sizeof(int)-1<<3)) 本质是用!0=1 !非零=0原创 2021-03-16 21:02:54 · 690 阅读 · 0 评论 -
CSAPP 6.38 6.39 6.41课后习题
一、题目描述P490-P492二、分析求解6.38:每个Cache块32字节包含两个结构体 每个结构体8个int 因此顺序访问不命中是每块首部的第一个int不命中 所以答案为总的写次数是16*16*4 高速缓存不命中写总数是16*16*4*1/8 不命中率是1/8 = 12.5%6.39:按列顺序访问 每个Cache块的两个结构体只有第一个有效 命中率为1/4 = 25% 总的写次数不变 不命中写总数是总数的1/46.41:每个Cache块包含一个结构体 每个结构体4个原创 2021-03-08 11:58:08 · 747 阅读 · 1 评论 -
CASPP 6.34课后习题
一、题目描述二、分析求解解题关键:给出每个数组到缓存的映射关系 然后按数组的引用顺序分析缓存情况src 按行访问 dst按列访问原创 2021-03-08 09:20:11 · 783 阅读 · 0 评论 -
CSAPP 6.17习题解析
1. 题目描述二、答案答案B容易分析 答案A中src最后一个为什么是hit?分析:Cache为直接映射一组一行 块大小8B 映射两个int 也就是一个缓存行映射一行数组src 始终按行访问 dst始终按列访问 Cache内容变化过程如下 共8次内存引用for (i = 0; i < 2; i++) for (j = 0; j < 2; j++ dst[j][i] = src[i][j];// src行访问顺序 src[0][0] src[0][1] src[原创 2021-03-07 14:40:46 · 1862 阅读 · 4 评论 -
CSAPP 数组访问模式测试
一、已知结论数组按行顺序步长为1访问模式具有最好的空间局部性-数组在内存中顺序存放顺序访问对高速缓存友好二、测试代码测试数组按行顺序和列顺序的时间倍数差测试数据:400MB数组大小 64位机器 六核i7#include <stdio.h>#include <stdlib.h>#include <time.h>#define N 10000#define M 10000#define LEN N*M void sum(int *a) {原创 2021-03-07 11:15:22 · 125 阅读 · 0 评论 -
CSAPP 第三版6.11练习题
一、中间位做组索引位道理很简单:地址低位变化比地址高位快 高位由低位进位而来 低位变化快就不可能重复 将它编码成组索引位就避免不同内存块映射到相同缓存块二、练习题6.11A: 如果高位做组索引s 低位自然是标记位t 显然一个缓存块映射2^t个内存块B:t = 32 - log2(512) = 18 一个缓存块映射pow(2, 18)个内存块 array大小为4096*4B/32B = 512块 所以array映射到一个缓存块...原创 2021-03-06 20:34:14 · 892 阅读 · 0 评论 -
CSAPP 第三版6.29课后习题答案
一、题目描述二、分析求解地址匹配查找 注意看有效位原创 2021-03-06 10:21:45 · 831 阅读 · 0 评论 -
CSAPP 第三版6.25课后习题答案
一、题目描述二、分析求解缓存结构图:计算公式:C = S * B * E m = t + s + b缓存查找过程:物理地址划分为3部分 3级查找 根据组索引找某一组 根据标志找某行 根据快偏移找某个字节数据...原创 2021-03-06 10:05:54 · 476 阅读 · 0 评论 -
CSAPP 第三版5.17习题答案
一、题目描述二、分析求解指针长度:64位机器上所有指针类型sizeof = 8 sizeof(ptr) 与指针类无关指针类型:设置指针类型的目的是规定元素内存大小 规定指针移动的长度 char* p p++ 移动1B int* p p++ 移动4B代码分析:#include <stdio.h>void* basic_memset(void *s, int c, size_t n) { size_t cnt = 0; unsigned char *schar =原创 2021-03-06 09:24:38 · 731 阅读 · 0 评论 -
CSAPP 第三版3.70习题答案
一、题目描述二、分析求解union 联合体知识:所有成员共用内存 互相影响 目的是节省内存union data{ // 内存结构图 int n; |__| c 1B char c; |__| m 2B short m; |__| } |__| n 4Be1 和 e2 共享内存,所以答案为 0 8原创 2021-03-05 19:33:04 · 792 阅读 · 0 评论 -
CSAPP 第三版 3.69课后习题答案
一、题目描述整理成代码 typedef struct { int first; a_struct a[CNT]; int last; } b_struct; void test(long i, b_struct *bp) { int n = bp->first + bp->last; a_struct *ap = &bp->a[i]; ap->x[ap->idx] = n; } mov 0x120(%rsi),%ecx原创 2021-03-05 10:40:45 · 1389 阅读 · 3 评论 -
数字表示-原码 反码 补码 移码
1. 计算规则假设数字用8位编码正数原 反 补码相同原码 +25: 0 001 1001 最高位为符号位 后7位为真值部分反码 +25: 0 001 1001 最高位为符号位 后7位为真值部分补码 +25: 0 001 1001 最高位为符号位 后7位为真值部分负数反码 = 符号位不变原码真值部分取反 负数补码 = 符号位不变反码+1原码 -25: 1 001 1001 最高位为符号位 后7位为真值部分反码 -25: 1 110 0110 最高位为符号原创 2021-03-03 17:57:18 · 3110 阅读 · 3 评论 -
CSAPP 3.63课后题答案
1. 题目描述二、分析求解明确寄存器与变量:rdi: x rsi: n rax: result明确case个数:x = x - 0x3c = x - 60 // 60 是第一个casecmp x - 60 - 5 = x - 65 // 65 是最后一个caseja 4005c3 // x > 65 跳转到此处 猜测是default语句明确每个case对应的代码块:间接调转表有6个地址印证2中case范围 60-65 并写出对应关系60->5a1原创 2021-03-04 12:06:45 · 1276 阅读 · 2 评论