我一直在读一本名为 “学习用汇编编程,Jonathan Barlett”的书。其中,我没看懂图6-1。
上下文: 作者正在解释注册间接模式,使用mov (%rbx), %rax
。我怀疑底部的盒子应该标记为
%rax
而不是
%rbx
。但我并不是100%有信心。因为我是装配新手。我是否遗漏了一些我必须知道的东西或者作者犯了错误?
mov (%rbx), %rax
,加载结果写入RAX。RBX 未修改,仅读取。
rep movsb
等,但它们使用固定寄存器,而不是正常的 ModRM 寻址模式。)
%rax
对于底部的框来说是有意义的,作为记忆中箭头的目的地。但框外的文字已经涵盖了这一点。
底部框的一个可能解释是内存对地址%rbx
因此从概念上讲,内存请求可能是一件大事并且需要一些时间(或者对于重复访问同一行可能非常便宜)。 同一缓存行的其他加载也可以将自己附加到同一缓冲区以等待传入数据。 无论如何,对我来说,绘制一个将请求和响应分开的图表是有意义的,所以我认为这就是正在发生的事情。
不久前,我花了几分钟浏览 Jonathan 的上一本书《Programming from the Ground Up》(免费,GFDL,使用 AT&T 语法涵盖 i386,该书从
x86 标签 wiki 以及其他有用的资源链接),他确实谈到了一些关于真实的 CPU 和真实的操作系统如何工作的内容。