博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
深入理解计算机系统(第三版) csapp 第三章部分答案
阅读量:6253 次
发布时间:2019-06-22

本文共 2150 字,大约阅读时间需要 7 分钟。

3.63

(gdb) x/6gx 0x4006f8//相邻地址相差8字节0x4006f8: 0x00000000004005a1  //对应n=00x400700: 0x00000000004005c3  //对应n=10x400708: 0x00000000004005a1  //对应n=2 如此类推0x400710: 0x00000000004005aa  0x400718: 0x00000000004005b20x400720:  0x00000000004005bf//因此当n=0或者n=2时候对应0x4005a1

 

1 
: 2 400590: 48 83 ee 3c sub $0x3c, %rsi //减去60 n=n-60 3 400594: 48 83 fe 05 cmp $0x5, %rsi 4 400598: 77 29 ja 4005c3
5 //判断n是否大于5 如果大于5则跳转到4005c3 处 6 40059a: ff 24 f5 f8 06 40 00 jmpq *0x4006f8(,%rsi,8) 7 // 跳到跳转表对应的位置,假设跳转表对应数组a[x],那么分别跳到a[0x4006f8+8*n]处 8 4005a1: 48 8d 04 fd 00 00 00 lea 0x0(,%rdi,8),%rax 9 //当n为0或者2时跳转到此处10 4005a8: 0011 400593: c3 retq12 4005aa: 48 89 f8 mov %rdi, %rax//当n为3时跳转到此处13 4005ad: 48 c1 f8 03 sar $0x3, %rax14 4005b1: c3 retq15 4005b2: 48 89 f8 mov %rdi, %rax//当n=4时跳转到此处16 4005b5: 48 c1 e0 04 shl $0x4, %rax17 4005b9: 48 29 f8 sub %rdi, %rax18 4005bc: 48 89 c7 mov %rax, %rdi19 4005bf: 48 0f af ff imul %rdi, %rdi //当n=5会跳到此处20 4005c3: 48 8d 47 4b lea 0x4b(%rdi), %rax//其他情况跳转到这里21 4005c7: c3 retq

最后C语言代码:

long switch_prob(long x, long n){    long result = x;    switch(n):{        case 60:        case 62:            result = x * 8;            break;        case 63:            result = result >> 3;            break;        case 64:            result = (result << 4) - x;            x = result;        case 65:            x = x * x;         default:  //61在默认情况中            result = x + 0x4b;    }}

 

 

3.64

对于三维数组A[i][j][k],我一直以为i,j,k是行,列,层,其实应该是层,行,列。高维度应该写在前面

所以对于一个数组A[3][2][2]  

第一层为:

A[0][0][0] 

A[0][0][1]

A[0][1][0] 

A[0][1][1]

第二层为:

A[1][0][0] 

A[1][0][1]

A[1][1][0] 

A[1][1][1]

第三层为:

A[2][0][0] 

A[2][0][1]

A[2][1][0] 

A[2][1][1]

所以根据数组首地址求的最后一个元素的地址=首地址+(目标元素的那一层下面的所有元素个数+加目标元素所在层除了目标元素外的所有行的所有元素+目标元素所在行除自己外的所有元素)*单个元素大小

A.

  所以公式 &A[i][j][k] = Xa +8*(i*S*T+j*T+k)  

B.

  根据汇编得 &A[i][j][k] = Xa +8*(65i+13j+k)  

  S*T =65

  T=13

  size(A) = 3640 =R*S*T

所以R=7,S=5,T=13

 

暂时发两题剩下的过几天补上

转载于:https://www.cnblogs.com/blzm742624643/p/9544400.html

你可能感兴趣的文章
无人驾驶如果投入市场,可能最先出现在日本
查看>>
n个结点,不同形态的二叉树(数目+生成)
查看>>
SpringMVC解析2-ContextLoaderListener
查看>>
Hadoop 调试第一个mapreduce程序过程详细记录总结
查看>>
任务调度-java普通工程通过Timer实现
查看>>
<img>标签的src=""空字符会出现的情况
查看>>
poj2513Colored Sticks(无向图的欧拉回路)
查看>>
两家ADAS路测大战,谁将成为最终的“汽车之眼”?
查看>>
thinkphp-条件判断-SWITCH标签
查看>>
索引视图导致死锁
查看>>
swagger restful api form映射实体对象和body映射实体对象配置
查看>>
IOS启用WebApp全屏模式
查看>>
contentprovider的学习实例总结
查看>>
Alternating row colors in a Flex Tree control using the alternatingItemColors style
查看>>
海洋小游戏合集 v2.0
查看>>
python 之logging 模块
查看>>
微信支付开发invalid appid错误
查看>>
Apache prefork性能调优
查看>>
mysql需要调整的参数
查看>>
HTML5 本地缓存 (web存储)
查看>>