Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 28 Oct 2001 09:21:33 -0700 (PST)
From:      John Baldwin <jhb@FreeBSD.org>
To:        Matthew Emmerton <matt@gsicomp.on.ca>
Cc:        hackers@freebsd.org
Subject:   RE: Simple x86 assembler question
Message-ID:  <XFMail.011028092133.jhb@FreeBSD.org>
In-Reply-To: <003901c15f3c$5bdef760$1200a8c0@gsicomp.on.ca>

next in thread | previous in thread | raw e-mail | index | archive | help

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 <jhb@FreeBSD.org> -- 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 majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?XFMail.011028092133.jhb>