need help understanding the movzbl call in this function
20,158
A corresponding C function would be something like
char fn(char * string, int index)
{
return string[index];
}
Specifically, the movzbl
instruction fetches the byte stored at the sum of the two parameters, zero pads it, and stores it into eax
. The movsbl
instruction takes the lowest byte of eax, sign extends it, and stores the result back in eax.
Author by
Daniel Love Jr
Updated on July 09, 2022Comments
-
Daniel Love Jr almost 2 years
So I'm trying to write some C code by looking at the assembly here:
pushl %ebp movl %esp, %ebp movl 12(%ebp), %eax addl 8(%ebp), %eax movzbl (%eax), %eax movsbl %al,%eax popl %ebp ret
I see that I have two variables, and they are being added together, then I'm getting lost when looking when the function starts calling movzbl and movesbl. What's going on here?