正如您在标题中看到的那样,我的问题是以下程序集的作用:
MOV ESI, function.0042FOC1C
我唯一知道的是ESI是目标操作数,而function.0042FOC1C是源操作数,你可以从源到右移动MOV操作。
所以,但在那种情况下:什么在移动? function.0042FOC1C的地址?当我假设它是存储器地址0042FOC1C的函数时,返回值函数0.0042FOC1C?还有什么?
我希望有人可以向我解释......
答案 0 :(得分:1)
MOV
表示“复制”。
ESI
是处理器寄存器。 8086有一个16位SI
寄存器,其中“SI”是“源索引”的缩写,IIRC(与目标索引寄存器和计数器寄存器结合使用,用于自动重复复制操作)。使用80386,8086寄存器扩展为32位,每个完整扩展寄存器的名称为E
+原始寄存器名称。
到目前为止的摘要:指令将32位复制到寄存器ESI
。
源function.0042FOC1C
听起来像一个函数地址,但它实际上取决于上下文。
请注意,还有适用于Intel x86处理器程序集的AT& T语法。它有很多百分号,切换源和目标操作数顺序(IIRC),通常是不可读的。它默认由g ++编译器使用,但您可以命令它使用更易读的Intel语法。