x86: 寄存器操作作为内存内容和内存地址?

x86: register operation as memory content and memory address?

寄存器--->内存地址-->内存内容

内存地址-->内存内容

以上模型是否正确?

而且,如果是的话,你能告诉我我的想法是否正确吗??

movl %eax, %ebx --> 它将 eax 的内存地址移动到 ebx 从而导致内容也移动??

movl (%eax),%ebx --> 它只是移动内容而不触及地址??

movl value, %eax --> 将 value 的内存地址移动到 %eax(以及内容,即 eax 具有新的内存内容)

movl %eax, val ---> val 也有新的内存地址和内容(都是 %eax)

movl $val, %eax ---> val 是移动到 %eax 内容的内容(地址不变)

movl %eax, $val ---> ????

movl (%eax), val ---> val 刚好有新的内存内容

mov (%eax), $val ---> 错误?

mov $val, (%eax) ---> 错误?

movl %eax, %ebx --> 将寄存器 %eaxcontent 移动到寄存器 %ebx 中。 %eax 包含什么无关紧要。

movl (%eax),%ebx --> 将%eax中包含的内存地址的内容移动到寄存器%ebx

movl value, %eax --> 将内存地址value的内容移动到寄存器%eax.

movl %eax, val --> 将寄存器%eax的内容移动到内存地址val

movl $val, %eax --> 将 常量 $val 移动到寄存器 %eax

movl %eax, $val --> 不可能。您不能将某些内容移动到常量值中。

movl (%eax), val --> 不可能。您必须使用寄存器作为中间件:

movl (%eax),%eax
movl %eax,val    ; or use another intermediate register than %eax                    

mov (%eax), $val --> 我不可能。您不能将某些内容移动到常量值中。

mov $val, (%eax) --> 将常量值$val移动到[=12=中包含的内存地址 ].