Re: need volatile for asm?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 02/16/2011 12:11 AM, kevin diggs wrote:
Hi,

Does the asm in:

#include<stdio.h>

int main(int argc, char *argv[])
{
unsigned int pc;

	asm("\n\t"
		"call 1f\n\t"
		"1: pop %0\n"
		:"=g"(pc)
	);

	printf(__FILE__"`%s()-%d:  %%pc is %p\n",__func__,__LINE__,pc);

	return 0;
}

need volatile?

Thanks!

kevin


Hey Kevin

no, you don't need the volatile keyword since the output operand (pc) is live after the asm statement which puts a side-effect on the asm statement.

A possible way to verify the need of volatile would be to compile the code at a high optimization level, e.g. -O3 and check the assembly code (-S option) if the inline assembly was removed or NOT.

Best regards,
Andi


[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux