【发布时间】:2021-11-17 02:42:04
【问题描述】:
我正在使用这本教科书 Randal E. Bryant, David R. O'Hallaron - Computer Systems。程序员的观点 [第 3 版](2016 年,Pearson)。对于这个问题 3.43 我不知道为什么 一些问题会产生如给定答案中所示的汇编代码。
首先,我不确定为什么在&up->t1.w 的情况下在movw 之前增加了10。
其次,当前两个示例要求我们执行以下操作时,我不确定为什么 up->t2.a 在汇编中只产生一行:
movq (%rdi), %rax
movq %rax, (%rsi)
发生了什么变化?
第三,up->t2.a[up->t1.u] 行被翻译成类似的混淆:
movq (%rdi), %rax
movl (%rdi,%rax,4), %eax
movl %eax, (%rsi)
感谢您的任何帮助,谢谢!
【问题讨论】:
-
请勿发布代码、数据、错误消息等的图片 - 将文本复制或输入到问题中。 How to Ask
-
@Rob 我会将这些视为插图。也许OP没有数字版的书,复制所有这些都是浪费
-
加10是为了得到struct的偏移量。在 C 程序中尝试
sizeof(long) + sizeof(short) -
@DownloadPizza 要找出答案,请删除“插图”,看看如果没有它们,问题是否仍然可以回答。
-
@DownloadPizza 我希望 OP 投入工作并将书中的相关部分复制到他的问题中。这也会使问题更容易阅读。