Related articles |
---|
[8 earlier articles] |
Re: Optimizing in assembly language rhyde@transdimension.com (Randall Hyde) (2001-03-10) |
Re: Optimizing in assembly language me@nospam.net (Scottie) (2001-03-10) |
Re: Optimizing in assembly language thp@hill.cs.ucr.edu (Tom Payne) (2001-03-12) |
Re: Optimizing in assembly language rhyde@transdimension.com (Randall Hyde) (2001-03-14) |
Re: Optimizing in assembly language bonzini@gnu.org (2001-03-22) |
Re: Optimizing in assembly language thp@hill.cs.ucr.edu (Tom Payne) (2001-03-22) |
Re: Optimizing in assembly language Eric.Boon@ICT.nl (Eric Boon) (2001-03-22) |
Re: Optimizing in assembly language uabbwat@uab.ericsson.se (Barry Watson) (2001-03-26) |
Re: Optimizing in assembly language Martin.Ward@durham.ac.uk (2001-03-26) |
Re: Optimizing in assembly language joachim_d@gmx.de (Joachim Durchholz) (2001-03-26) |
Re: Optimizing in assembly language sunni@speakeasy.net (Shankar Unni) (2001-03-26) |
Re: Optimizing in assembly language rhyde@transdimension.com (Randall Hyde) (2001-03-27) |
From: | "Eric Boon" <Eric.Boon@ICT.nl> |
Newsgroups: | comp.compilers |
Date: | 22 Mar 2001 01:21:59 -0500 |
Organization: | ICT Automatisering NV, NL |
References: | 01-03-006 01-03-080 |
Keywords: | assembler, optimize, architecture |
Posted-Date: | 22 Mar 2001 01:21:59 EST |
Scottie wrote:
>IIRC DEC/Mips used at least a bit of this approach. There were some
>problems, the most obvious of which were related to use of memory as
>semaphores. Code motion to improve memory bandwith removed full
>protection of critical sections.
> ...
> while (lock != 0)
> ...
> ;
> lock = 1
> ...update data with mutiple instruction...
> lock = 0
> ...
>Dead store elimination, if implemented, can remove locks on
>resources above entirely, leaving code like:
> ...
> while (lock != 0)
> ...
> ;
> ...update data with multiple instruction...
> lock = 0
> ...
>or even (on discovering the protect loop always exits with lock==0):
> ...
> while (lock != 0)
> ...
> ;
> update data with more than one indivisible instruction
> ...
That problem can be overcome easily by qualifying 'lock' as a
'volatile' variable, a variable of which the value can be changed
externally. That's very useful for e.g. memory mapped I/O,
semaphores:-), etc. Anything a program does to a volatile variable
should be left untouched by an optimizer.
Eric
Return to the
comp.compilers page.
Search the
comp.compilers archives again.