From: "clusty" Newsgroups: comp.os.msdos.djgpp Subject: Re: inline assembly and c struct Date: Thu, 1 Feb 2001 17:51:38 +0100 Organization: news.onet.pl Lines: 56 Sender: [clusty.friko4.onet.pl]@ppp-12.cuprum.com.pl Message-ID: <95f5mk$cug$1@news.onet.pl> References: <957ghs$kl$1 AT news DOT onet DOT pl> <959619$f3k$1 AT murdoch DOT acc DOT Virginia DOT EDU> NNTP-Posting-Host: ppp-12.cuprum.com.pl X-Trace: news.onet.pl 981146132 13264 195.117.119.140 (2 Feb 2001 20:35:32 GMT) X-Complaints-To: abuse AT onet DOT pl NNTP-Posting-Date: 2 Feb 2001 20:35:32 GMT X-Newsreader: Microsoft Outlook Express 5.00.2919.6600 X-MSMail-Priority: Normal X-Priority: 3 X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2919.6600 To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com In article news:959619$f3k$1 AT murdoch DOT acc DOT Virginia DOT EDU , "Clark L. Coleman" clc5q AT cobra DOT cs DOT Virginia DOT EDU>... wrote: > In article <957ghs$kl$1 AT news DOT onet DOT pl>, aiur9 wrote: > >How can I get a structure member offset from inline assembly > > Who says it has to be assembly? Why not just take the address of > fields in C, using the "&" operator? > > struct foo ( > int x; > int y; > } > > struct foo bar; > > long y_offset = &(bar.y) - &bar; > > Can't you make something like that work? > > > > no 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 (%%eax),%%edx ...) I would have to write asm(... mov _y_offset,%%eax mov (%%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