On 27-Oct-01 Matthew Emmerton wrote:
> Hi all,
> 
> This weekend I decided to do some assembly hacking on some object-only code
> that I've lost the C source for.  Since I haven't coded assembler for at
> least 8 years, and I threw my x86 assembly manuals out when I moved 6 months
> ago, there are a few things that are stumping me.
> 
> In particular, am I interpreting these instructions correctly?
> 
> 0x80839fb <uttstrbyt+43>:       movzbl (%edx,%eax,1),%eax
> 
> 
> Takes %eax + %edx, obtains the byte value in memory at that address,
> zero-extends and places into %eax
> 
> 0x80839ff <uttstrbyt+47>:       movzwl 0xe90(%ebx,%eax,2),%edx
> 
> Takes %eax + %ebx + 0xe90, obtains the word value in memory at that address,
> zero-extends and places in %edx.

Almost.  The '2' there is a multiplier on (I think) %eax, so it uses
'ebx + 2 * eax + 0xe90' for the memory address.  Either that or
'eax + 2 * ebx + 0xe90'.  Check the gas info page for the AT&T syntax to figure
out exactly which.  (Or use nasm's diassembler which turns out Intel format
asm.)  (ports/devel/nasm, ndisasm)

-- 

John Baldwin <[EMAIL PROTECTED]> -- http://www.FreeBSD.org/~jhb/
PGP Key: http://www.baldwin.cx/~john/pgpkey.asc
"Power Users Use the Power to Serve!"  -  http://www.FreeBSD.org/

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message

Reply via email to