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

Assembly CPU对寄存器的操作如何影响内存?,assembly,memory,x86,cpu-registers,Assembly,Memory,X86,Cpu Registers,我试图理解寄存器操作是如何影响内存位置的。 例如,这里是寄存器及其内容 Registers Values rax 10 rdx 40 rcx 20 rbx 0x3008 和一些内存位置: Memory Values 0x2FF8 10 0x300 190 0x3008 3 0x3010 68 在以下操作之后 movq $0, %rax movq

我试图理解寄存器操作是如何影响内存位置的。 例如,这里是寄存器及其内容

Registers  Values

rax         10       
rdx         40       
rcx         20   
rbx         0x3008
和一些内存位置:

Memory    Values
0x2FF8     10
0x300     190
0x3008      3
0x3010     68
在以下操作之后

movq $0,    %rax
movq $100,  %rdx
addq %rcx,  %rax
imulq %rax, %rdx

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

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

代码是

   0:   48 c7 c0 00 00 00 00    mov    $0x0,%rax
   7:   48 c7 c2 64 00 00 00    mov    $0x64,%rdx
   e:   48 01 c8                add    %rcx,%rax
  11:   48 0f af d0             imul   %rax,%rdx
它的作用是:

  • 将0加载到
    RAX
    寄存器中
  • 将100加载到
    RDX
    寄存器中
  • RAX
    寄存器的当前值增加
    RCX
    寄存器的值
  • signed将
    RAX
    的值乘以
    RDX
    的值(即100,如果在其间的中断中没有更改),并将结果的最低64位存储到
    RDX
  • 因此,结果应为,
    rcx
    as 20

    rax         20      
    rdx         2000       
    rcx         20  
    
    和rbx不变


    寄存器是“一种内存”,但与结构非常简单的DRAM不同,它们是CPU硅上一组复杂得多的端口和布线。

    那么,存储在这些内存地址中的整数值不会受到影响,并且保持不变?我说的对吗?@a_a_a_a抱歉:是的。Q中的格式设置已关闭。是的,记忆保持不变。