CSAPP 第三版 第七章 家庭作业
自己做的 仅供参考 可能出现错误
注: 7.7 mark一下
7.6
符号 | swap.o.symtab条目? | 符号类型 | 定义符号的模块 | 节 |
---|---|---|---|---|
buf | 是 | 外部 | m.o | .data |
bufp0 | 是 | 全局 | swap.o | .data |
bufp1 | 是 | 局部 | swap.o | .bss |
swap | 是 | 全局 | swap.o | .text |
temp | 否 | —— | —— | —— |
incr | 是 | 局部 | swap.o | .text |
count | 是 | 局部 | swap.o | .bss |
7.7
void f() {
double x = -0.0;
}
7.8
(a) REF(main.1) -> DEF(main.2)
REF(main.2) -> DEF(main.2)
(b) REF(x.1) -> DEF(未知)
REF(x.2) -> DEF(未知)
(c) REF(x.1) -> DEF(错误)
REF(x.2) -> DEF(错误)
7.9
p2中的第四行的main是弱符号,链接后的引用是foo6.c中的函数main
main的第一个字节就是0x55(pushq %rbp),所以能打印出0x55
P.S.:在我的机器上是0x55啊???
7.10
A. gcc p.o libx.a
B. gcc p.o libx.a liby.a libx.a
C. gcc p.o libx.a liby.a libx.a libz.a
7.11
.bss节(未初始化的全局和静态C变量,以及初始化为0的全局和静态C变量)原来在目标文件中不占内存,但可执行文件中是需要分配内存的
7.12
A. 0x4004f8 - 4 - (0x4004e0 + 0xa) = 0xa
B. 0x400500 - 4 - (0x4004d0 + 0xa) = 0x22
7.13
A. 1579 471
B. 不同,-g是编译选项
C.