考试题目涉及的知识点都是老师提过的内容,但题目基本不是原题,不看仔细的话会忽略了细节。
一、有两个结构体、一段C代码和一段汇编代码,需要分析出结构体中两个常量A、B的具体值。以下为模糊版回忆,可能存在错误,具体变量名并不记得了。
struct str1{
int arr[A][B];
long v;
}
struct str2{
char ch[B];
int t;
short s[A];
long u;
}
void test(str1 *p, str2 *q){
p->v=q->t+q->u;
}
p in rdi, q in rsi (大致意思是这样)
mov 8(%rsi), rax
add 32(%rsi),rax
mov rax,184(%rdi)
这题考察的是对齐的知识,画一下对齐的结构图,可以分析出B<=8,A<=10,45<=A*B<=46,所以A=9,B=5
二、很简单的一道无符号数转有符号数,先给一段C代码,再针对代码中的变量进行填表值。值得注意的是 -Tmin=Tmin
三、推荐放在最后写的题目,给了四种缓存区管理策略:
A:直接映射,块大小8字节 ,缓存区大小1024字节
B:4路组相联 块大小8字节,采用LRU替换策略,缓存区大小1024字节
C:直接映射,块大小64字节,缓存区大小1024字节
D:4路组相联,块大小64字节,采用LRU替换策略,缓存区大小1024字节
再给出四个代码段,分析每个代码段用哪个方案最好。
当时分析完第一轮后,直接跳后面的题目了,感觉这题15分太少了,不值得。
四、两小题,给出一个三维数组arr[R][S][T],再给出一段汇编代码,第一题分析数组结构,第二题求解R S T的具体值。
五、六记得不太清楚了,比较简单,类似第十章(PPT的3题)和第八章那些分析程序输出的,大概有六七小题,最后一小题类似练习题8.8.
七、唯一算得上是原题的,端到端的地址翻译,第九章重点复习内容。
大致上就是这些,考完玩了几天才想起来回忆,具体内容已经记不清了。
考完大部分同学认为很难,是因为第一题没考虑到数据对齐导致一直推导不合理,耽误了大量时间影响了心态,以及第三题浩大的思维分析量。建议如果不会写直接先写后面,再回头慢慢分析题目。老师出题不是按难度来,好像是按章节顺序来的,卡在前面很正常。
图片来自互联网