X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f From: "Rod Pemberton" Newsgroups: comp.os.msdos.djgpp Subject: Re: Using inline asm Date: Thu, 25 Oct 2007 04:39:14 -0400 Organization: Aioe.org NNTP Server Lines: 23 Message-ID: References: <471FEAC8 DOT 5179 DOT 2FAB88DB AT gerritvn DOT gpvno DOT co DOT za> <200710250120 DOT l9P1KEb2032374 AT envy DOT delorie DOT com> <200710250306 DOT l9P36dqi002391 AT envy DOT delorie DOT com> NNTP-Posting-Host: IVw7K97ih4IohxRqyKkqFw.user.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit X-Complaints-To: abuse AT aioe DOT org X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1441 X-Newsreader: Microsoft Outlook Express 6.00.2800.1437 X-Priority: 3 X-MSMail-Priority: Normal To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com "DJ Delorie" wrote in message news:200710250306 DOT l9P36dqi002391 AT envy DOT delorie DOT com... > > > > > asm ("cpuid" : "=a" (iRet)); > > > > Huh? I'm sure I missed something... That takes care of eax for cpuid, but > > that ignores ebx, ecx, and edx. cpuid trashes those four registers whether > > he returns them or not, correct? How does GCC correct the other three? > > asm ("cpuid" : "=a" (iRet) : : "ebx", "ecx", "edx"); > > Or something like that. Thanks. Okay, it doesn't, so correct the code... I wasn't sure if the asm directive inserted a pusha; popa combination into the stackframe, say instead of push ebp; pop ebp, or used some other method. That might mess up returns... RP