家庭作业(第二章、第三章、第七章、第八章)

第二章选题

2.58

int is_little_endian(){
int a = 1;
return *((char*)&a);
}

2.59

(x&0xFF) | (y&~0xFF)

第三章选题

3.55

解答:

算法思路如下:
x的高32位为xh,低32位为xl。
y的符号位扩展成32位之后为ys(ys为0或者-1)。
dest_h = (xl*ys)_l + (xh*y)_l + (xl*y)_h
dest_l = (xl*y)_l
因为所有的乘法都是unsigned*unsigned。即对于 1*(-1),如果存入两个寄存器中,那么高32位是0,低32位是-1。 相当于 1*(UNSIGNED_MAX)。

第七章选题

7.7

解答:

在double x前加上static。

7.9

解答:

p2中的main是弱符号,链接后的引用是foo6.c中的函数main。
main的第一个字节就是0x55(pushl %ebp),所以能打印出0x55。

8.13

->x=2

->x=4->x=3

满足这种拓扑即可。


 


8.16

输出counter = 2,因为全局变量也是复制的,而不是共享的。


 

8.18

画一下进程图就可以知道。

                       

 

所以ACE是可能的。

参考文献:

《深入理解计算机系统》pdf

心得体会:第二章的题感觉比较容易, 第七章基础不扎实, 其实感觉第七章有点知识点感觉难以理解, 在同学的解释下, 略懂了点。

 

  

原文地址:https://www.cnblogs.com/zhengwei0712/p/4891627.html