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
它的作用是:
RAX
寄存器中RDX
寄存器中RAX
寄存器的当前值增加RCX
寄存器的值RAX
的值乘以RDX
的值(即100,如果在其间的中断中没有更改),并将结果的最低64位存储到RDX
rcx
as 20
rax 20
rdx 2000
rcx 20
和rbx不变
寄存器是“一种内存”,但与结构非常简单的DRAM不同,它们是CPU硅上一组复杂得多的端口和布线。那么,存储在这些内存地址中的整数值不会受到影响,并且保持不变?我说的对吗?@a_a_a_a抱歉:是的。Q中的格式设置已关闭。是的,记忆保持不变。