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>