相关疑难解决方法(0)

为什么MOV不能将两个操作数都作为内存位置?

我读到该MOV指令不能为其两个操作数都有内存位置.

喜欢:MOV [0012H], [0016H]不允许.

为什么这样?

其他指令可以为其两个操作数设置内存位置吗?

assembly x86-16

7
推荐指数
1
解决办法
2887
查看次数

为什么不允许在内存之间移动?

我想知道这是否允许组装

 movl (%edx) (%eax) 
Run Code Online (Sandbox Code Playgroud)

我猜想它会访问第一个操作数的内存,然后放入第二个操作数的内存,类似* a = * b,但是我没有看到任何处理此类的示例,因此我猜想它是不允许的。另外,有人告诉我这是不允许的

 leal %esi (%edi)
Run Code Online (Sandbox Code Playgroud)

这是为什么?最后,还有其他类似的功能我不应该被禁止。

x86 assembly

3
推荐指数
2
解决办法
574
查看次数

在x64中,使用“ pop [RAX]”将值临时存储在哪里?

我找到了答案,说明无法在x86平台上直接存储到内存的复制,而不能将值存储在两者之间。

mov rax,[RSI]
mov [RDI],rax
Run Code Online (Sandbox Code Playgroud)

我大量使用pop来对内存进行64位写入,pop似乎直接将值复制到内存中,而没有任何明显的“中间人”。

值在写入之前但在读取之后在哪里?

x86 assembly x86-64 cpu-architecture

2
推荐指数
1
解决办法
60
查看次数

标签 统计

assembly ×3

x86 ×2

cpu-architecture ×1

x86-16 ×1

x86-64 ×1