CPU 对寄存器的操作如何影响内存?

How do CPU operations on registers affect memory?

我想了解寄存器操作如何影响内存位置。 例如这里是寄存器和它们的内容

Registers  Values

rax         10       
rdx         40       
rcx         20   
rbx         0x3008

和一些内存位置:

Memory    Values
0x2FF8     10
0x300     190
0x3008      3
0x3010     68

经过以下操作

movq [=13=],    %rax
movq 0,  %rdx
addq %rcx,  %rax
imulq %rax, %rdx

现在上述内存位置的内存值应该是多少?它们应该随着我更改寄存器值而改变吗?

这些指令不会访问任何内存位置,因此它们不会更改内存。此摘录所做的唯一内存访问是将这些 指令 操作码和操作数加载到 CPU 中。

密码是

   0:   48 c7 c0 00 00 00 00    mov    [=10=]x0,%rax
   7:   48 c7 c2 64 00 00 00    mov    [=10=]x64,%rdx
   e:   48 01 c8                add    %rcx,%rax
  11:   48 0f af d0             imul   %rax,%rdx

及其作用:

  1. 将 0 加载到 RAX 寄存器中
  2. 将 100 加载到 RDX 寄存器
  3. RAX寄存器的当前值增加RCX寄存器
  4. 的值
  5. RAX 的值乘以 RDX 的值(即 100,如果它在两者之间的中断中未更改)并存储最低 64 位result 结果变成 RDX

因此结果应该是,给定 rcx 作为 20

rax         20      
rdx         2000       
rcx         20  

和 rbx 不变。

寄存器是 "a kind of memory",但与结构非常简单的 DRAM 不同,这些是 CPU 硅片上一组更复杂的端口和布线。