www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2000/04/09/16:39:24

From: Nate Eldredge <neldredge AT hmc DOT edu>
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
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

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019