练习题答案编校说明

练习题答案编校说明

本页是整理者的核对说明,不属于原书正文。答案按原书章末内容转录;普通表格、代码和简单公式转为可编辑文本。下列疑点均已对照扫描页确认:能够由题目数据、C 语义或指令编码唯一确定的排印错误已在正文中更正,并在这里保留原书记录;仍有解释空间的内容照录并加注。这里的记录不等同于出版社发布的正式勘误。

第 2 章

查看第 2 章答案。核对范围为原书第 97—108 页。

题号 原书内容或疑点
2.24 原书范围写作“0~3 和 -4~1”;正文已更正为“-4~-1”。
2.35 原书在 t ≠ 0 的情况下仍写“乘法不会溢出”;正文已更正为“发生溢出”。
2.44 F 原书表达式使用加法,解释中写“乘法”;正文已更正为“加法”。
2.54 B 原书与 A 同样印为 (int)(double),却给出不同判断;正文已更正为 (int)(float)

第 3 章

查看第 3 章答案。核对范围为原书第 226—242 页。

题号 原书内容或疑点
3.1 原书操作数印为 260($rcx,%rdx);正文已更正为 260(%rcx,%rdx)
3.4 原书 char 转 int 行印为 novsbl;正文已更正为 movsbl
3.9 原书文字为 sarl,代码为 sarq;正文已统一为 sarq
3.15 B 原书文字为 jb,代码为 je;正文已统一为 je
3.22 原书写“直到 20! 才溢出”,同时给出可表示的 20!;正文已更正为 21! 溢出。
3.30 原书写作“情况标号 3 和 -6”;正文已更正为“3 和 6”。
3.32 原书印为 repz repq;正文已更正为 repz retq
3.33 原书写 v+=b,代码上方原型为 procprob1、汇编标号为 procprob;正文已更正为 *v+=b 并统一函数名。
3.37 原书地址计算指令印为 leal,目的寄存器却为 %rax;正文已更正为 leaq
3.40 文字使用 index,C 代码使用 i。
3.43 原书 addq $,%rdi 缺少立即数,下一行漏掉目标地址括号;正文已补为 $10(%rsi)
3.44 C/D/E 原书结构声明最后的字段后没有分号;正文已补齐。
3.49 A 原书写作“这个值减去 s1”;正文已按 subq 语义改为“用 s1 减去这个值”。
3.51 原书 long 转 float 行印为 vctsi2ssq;正文已更正为 vcvtsi2ssq
3.53 原书参数说明写作 i1 (%rdi)、i2 (%esi);正文已更正为 %rsi

其他章节

  • 9.8 的代码片段含没有配对条件编译指令的独立 #endif,原书第 619 页确有此行。答案处已附编校注。
  • 12.12 的解释在原书第 727 页写作 gethostbyname;正文已根据图 12-38 中的调用更正为 ctime,并附编校注。

练习题答案与家庭作业分开。本仓库没有将自行推导的家庭作业解答混入原书答案。