From: Nate Eldredge Newsgroups: comp.os.msdos.djgpp Subject: Re: 'retf' in inline? Date: 09 Apr 2000 13:16:04 -0700 Organization: InterWorld Communications Lines: 32 Message-ID: <83snwv9gjf.fsf@mercury.st.hmc.edu> References: <38EFFFE0 DOT B217D192 AT home DOT com> <38F02F72 DOT A7C88440 AT mtu-net DOT ru> <8cqr46 DOT 3vs4f8r DOT 0 AT buerssner-17104 DOT user DOT cis DOT dfn DOT de> NNTP-Posting-Host: mercury.st.hmc.edu Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: nntp1.interworld.net 955311599 93773 134.173.45.219 (9 Apr 2000 20:19:59 GMT) X-Complaints-To: usenet AT nntp1 DOT interworld DOT net NNTP-Posting-Date: 9 Apr 2000 20:19:59 GMT User-Agent: Gnus/5.0802 (Gnus v5.8.2) Emacs/20.5 To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com buers AT gmx DOT de (Dieter Buerssner) writes: > Alexei A. Frounze wrote: > >might even optimize it!). Other commonly used constraints are "r" (load > >into any available register), "a" (ax/eax), "b" (bx/ebx), "c" (cx/ecx), > >"d" (dx/edx), "D" (di/edi), "S" (si/esi), etc. > > You might want to mention "q" for one of eax/ebx/ecx/edx as well. Actually, "q" means one of al/ah/bl/bh/cl/ch/dl/dh, though this is not explained well in the docs. The "q" stands for "quarter-word", i.e. 8 bits. And AFAIK the register constraints you list always use the 32 bit form, ie "a" is always %eax and never %ax. If you want %ax you have to use an (AFAICT) undocumented feature that changes the "mode" of the operand. So if you have an operand 1 with the "a" constraint: "%w0" is %ax "%b0" is %al "%k0" is %eax "%h0" is %ah See line 2400 of config/i386.h in the gcc source. Yes, I agree this should be in the manual. Feel like sending a patch? -- Nate Eldredge neldredge AT hmc DOT edu