What Does Mov Esi, Function.0042Foc1C Does?
As You Can See in the Title My Question What the Following Assembly Does: Mov Esi, Function.0042Foc1C the Only Thing I Know Is That Esi Is Target Operand and...
as you can see in the title my question what the following assembly does:
MOV ESI, function.0042FOC1C
The only thing I know is that ESI is target operand and function.0042FOC1C is the source operand and that you "move" something with the MOV operation from the source to the right.
So, but in that case: What is moving ? The address of function.0042FOC1C ? The return-value function.0042FOC1C when i assume that it is a function at the memory address 0042FOC1C ? Or what else ?
I hope someone can explain it to me...
1 Answer
MOV in Intel syntax assembly means “copy”.
ESI is a processor register. The 8086 had a 16-bit SI register, where “SI” was short for “source index”, IIRC (used in combination with a destination index register and a counter register for automatically repeated copy operations). With the 80386 the 8086 registers were extended to 32 bits and the name of each full extended register was E + original register name.
Summary so far: the instruction copies 32 bits to register ESI.
The source, function.0042FOC1C, sounds like a function address, but it really depends on the context.
Note that there’s also an AT&T syntax for Intel x86 processor assembly. It has lots of percentage signs, switches the source and destination operand order (IIRC), and is generally unreadable. It’s used by default by the g++ compiler, but you can order it to use the more readable Intel syntax.