相关疑难解决方法(0)

为什么IA32不允许内存到内存mov?

在英特尔架构IA32中,诸如movl,movw之类的指令不允许作为内存位置的操作数.例如,不允许使用指令movl(%eax),(%edx).为什么?

x86 assembly instruction-set cpu-architecture

14
推荐指数
2
解决办法
4830
查看次数

处理器可以同时进行内存和算术运算吗?

在汇编程序和处理程序的研究中,有一件事把我带出来,如何完成指令:

add mem, 1
Run Code Online (Sandbox Code Playgroud)

在我的脑海中,处理器无法加载内存值在同一指令期间处理算术运算.所以我觉得它发生在:

mov reg, mem
add reg, 1
mov mem, reg
Run Code Online (Sandbox Code Playgroud)

如果我考虑使用RISC Pipeline的处理器,我们可以观察一些停顿.对于简单的指令来说,这是令人惊讶的i++:

|  Fetch  | Decode  | Exec    | Memory  | WriteB  |
          |  Fetch  |         |         | Decode  | Exec    | Memory  | WriteB  |
                    |  Fetch  |         |         |         | Decode  | Exec    | Memory  | WriteB  |
Run Code Online (Sandbox Code Playgroud)

(正如我在Patterson的书" 计算机体系结构:定量方法"中所读到的,寄存器在解码 uOp,存储/加载到存储器uOp中读取,我们允许自己在存储器uOp中获取寄存器的值.)

我对吗?还是现代处理器有更具效的方法来做到这一点?

c assembly cpu-architecture risc

4
推荐指数
1
解决办法
151
查看次数

什么x86指令需要两个(或更多)内存操作数?

我以为没有.但是,我在这里看到,

具有两个存储器操作数的指令极为罕见

我找不到任何可以解释什么指令的内容,尽管很少见.有什么例外?

x86 assembly instructions machine-instruction

3
推荐指数
1
解决办法
668
查看次数