+ -
当前位置:首页 → 问答吧 → mov p, [esi+16]实际上是几条指令呢?

mov p, [esi+16]实际上是几条指令呢?

时间:2011-04-15

来源:互联网

刚开始学习内敛汇编,假如说下面的代码:

............
float* p;
__asm {
  ...............
  mov p,[esi+16]
}

这里的mov指令真的是一条指令吗?
是不是编译器会把他翻译成add
和mov两条指令呢?还有经过这条指令后
esi的值是原来的值呢还是+16之后的直呢?

谢谢

作者: menzi11   发布时间: 2011-04-15

当然是一条指令了,编译器不会把他翻译成add和mov两条指令的。
不过 mov p,[esi+16] 这条指令有问题。建议楼主查一下源码,因为mov指令是不允许两个操作数都是内存地址的。这样写才对:
Assembly code

    float* p;
    __asm {
            mov eax,[esi+16]
            mov p, eax
    }

作者: aiwnx   发布时间: 2011-04-15

不存在 mov p,[esi+16]指令

作者: Lactoferrin   发布时间: 2011-04-15