delorie.com/archives/browse.cgi | search |
From: | Nate Eldredge <neldredge AT hmc DOT edu> |
Newsgroups: | comp.os.msdos.djgpp |
Subject: | Re: inline assembly and c struct |
Date: | 02 Feb 2001 16:48:25 -0800 |
Organization: | InterWorld Communications |
Lines: | 45 |
Sender: | nate AT mercury DOT st DOT hmc DOT edu |
Message-ID: | <83lmro7fs6.fsf@mercury.st.hmc.edu> |
References: | <957ghs$kl$1 AT news DOT onet DOT pl> <959619$f3k$1 AT murdoch DOT acc DOT Virginia DOT EDU> <95f5mk$cug$1 AT news DOT onet DOT pl> |
NNTP-Posting-Host: | mercury.st.hmc.edu |
Mime-Version: | 1.0 |
X-Trace: | nntp1.interworld.net 981161305 24186 134.173.57.219 (3 Feb 2001 00:48:25 GMT) |
X-Complaints-To: | usenet AT news DOT interworld DOT net |
NNTP-Posting-Date: | Sat, 3 Feb 2001 00:48:25 +0000 (UTC) |
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 |
"clusty" <clusty AT poland DOT com> writes: > I want compiler to print y_offset in my piece of inline assembly code. > In above example i will get y_offset in variable and i.e instead of writing > > asm(... > mov <y_offset>(%%eax),%%edx > ...) > > I would have to write > > asm(... > mov _y_offset,%%eax > mov <y_offset>(%%eax),%%edx > ...) > > see the difference > > i tried something like this > > asm(... > "%0(%%eax),%%edx \n" > ... > ::"m"(*(&some_struct.member-&some_struct)) /*this thing gives*/ > /*variable at offset of*/ > /*offset of member */ > ); > but it won't work I think what you want is (untested) asm("movl %0(%%eax),%%edx" :: "i" (offsetof(some_struct, member)) ); The "i" constraint specifies that this operand is an immediate value, and hence will be inserted as a constant. Note that you should always use the standard `offsetof' macro instead of trying to calculate the offseet yourself. -- Nate Eldredge neldredge AT hmc DOT edu
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |