Does the keyword volatile work?

Stephen P. Smith ischis2@cox.net
Mon May 12 20:54:00 GMT 2003


Ok, I did what I thought you told me to do, and it didn't work. 
 assignThisNow isn't getting set right away.


 258:../../code/ipc/ipck.cpp **** DWORD CDECL someFunction( DWORD, DWORD 
p1, DWORD, DWORD, DWORD, DWORD)
 259:../../code/ipc/ipck.cpp **** {
 433                  .LM1:
 434 0000 55               pushl    %ebp
 435 0001 89E5             movl    %esp, %ebp
 436 0003 56               pushl    %esi
 437 0004 53               pushl    %ebx
 260:../../code/ipc/ipck.cpp ****   volatile DWORD assignThisNow = 
*(volatile DWORD *)&p1;
 261:../../code/ipc/ipck.cpp ****   NumericNameTYP threadName = 
(NumericNameTYP) assignThisNow;
 262:../../code/ipc/ipck.cpp ****   DWORD periodIndex = 0;
 439                  .LM2:
 440                  .LBB2:
 441 0005 31F6             xorl    %esi, %esi


Fergus Henderson wrote:

>On 12-May-2003, Stephen P. Smith <ischis2@cox.net> wrote:
>  
>
>>In the code fragment below which was produced with a 3.3 version of the gcc 
>>compiler,
>>why isn't the variable p1 assigned to mailboxHandle immediately?  I believe 
>>that the
>>keyword volatile should cause that to happen.
>>    
>>
>
>Firstly, I would suggest using `*(volatile DWORD *)&p1'
>rather than `(volatile DWORD)p1'.
>
>Secondly, if you want to be sure that the value will be assigned to
>the target variable immediately, you need to declare the target
>variable as volatile.
>
>  
>



More information about the Gcc mailing list