From: Simon Clubley <clubley@remove_me.eisner.decus.org-Earth.UFP>
Subject: Re: Oberon and Wirthian languages
Date: Wed, 23 Apr 2014 12:16:16 +0000 (UTC)
Date: 2014-04-23T12:16:16+00:00 [thread overview]
Message-ID: <lj8aug$43b$1@dont-email.me> (raw)
In-Reply-To: lj6uhp$7dd$1@loke.gir.dk
On 2014-04-22, Randy Brukardt <randy@rrsoftware.com> wrote:
> "Simon Clubley" <clubley@remove_me.eisner.decus.org-Earth.UFP> wrote in
> message news:lj6kfg$jhs$1@dont-email.me...
> ...
>> Ok, now that's interesting. I would not have assumed the compiler would
>> do the read multiple times in this specific case.
>>
>> I would have assumed the Volatile attribute would be satisfied in this
>> specific case by doing the read _once_ at the start of the generated
>> code and only generating code to modify the A, B and C bitfields
>> before writing everything back in one step by using a single store
>> opcode.
>
> C.6(20):
>
> The external effect of a program (see 1.1.3) is defined to include each read
> and update of a volatile or atomic object. The implementation shall not
> generate any memory reads or updates of atomic or volatile objects other
> than those specified by the program.
>
> I see two reads of Rec in the original source code. The above rule means
> that an Ada compiler must NOT combine those reads for convinience; it must
> do EXACTLY what's in the source code. If you only want one read, you have to
> restructure so there is only one explicit read.
>
> There was a long discussion about this some years ago, and the conclusion
> was that combining operations in particular is not allowed for volatile
> objects (and all atomic objects are also volatile).
>
Thanks for the feedback.
From a technical viewpoint, I can see exactly what you are saying and
can understand and agree with your reasoning for the general case.
However, from a practical viewpoint the example statement was just used to
update a subset of bitfields in the register at the same time so one read
would be sufficient. I am also very aware of device registers which either
return different results on different reads or treat a read as an
acknowledge.
In the C language replacement discussion I proposed an "atomic using" syntax
which would replace C style bitmasks for updating device registers and would
guarantee a single read register/apply modifications as required/write
register back in one opcode sequence.
I wonder if we need something like that for Ada proper so we don't have
to read the register into a temporary variable first in order to guarantee
a single register read and a single register write while updating a subset
of bitfields in the register.
Having to use a temporary variable to guarantee a update of, say, a couple
of bitfields (out of a possible large number of bitfields) at the same time
just feels as if it isn't elegant.
Simon.
--
Simon Clubley, clubley@remove_me.eisner.decus.org-Earth.UFP
Microsoft: Bringing you 1980s technology to a 21st century world
next prev parent reply other threads:[~2014-04-23 12:16 UTC|newest]
Thread overview: 144+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-04-11 2:39 Heartbleed Charles H. Sampson
2014-04-11 7:59 ` Heartbleed Maciej Sobczak
2014-04-11 10:50 ` Heartbleed Pascal J. Bourguignon
2014-04-12 1:46 ` Heartbleed Charles H. Sampson
2014-04-11 12:43 ` Heartbleed kalvin.news
2014-04-11 19:33 ` Heartbleed Simon Clubley
2014-04-12 4:58 ` Heartbleed Shark8
2014-04-12 7:15 ` Heartbleed Nasser M. Abbasi
2014-04-12 9:28 ` Heartbleed Georg Bauhaus
2014-04-12 9:33 ` Heartbleed Georg Bauhaus
2014-04-12 11:42 ` Heartbleed Pascal J. Bourguignon
2014-04-12 15:37 ` Heartbleed Nasser M. Abbasi
2014-04-12 18:56 ` Heartbleed Pascal J. Bourguignon
2014-04-12 20:29 ` Heartbleed Yannick Duchêne (Hibou57)
2014-04-12 20:34 ` Heartbleed Dmitry A. Kazakov
2014-04-12 20:47 ` Heartbleed Yannick Duchêne (Hibou57)
2014-04-12 20:53 ` Heartbleed Yannick Duchêne (Hibou57)
2014-04-15 10:02 ` Heartbleed Yannick Duchêne (Hibou57)
2014-04-15 12:35 ` Heartbleed Dmitry A. Kazakov
2014-04-12 21:57 ` Heartbleed Niklas Holsti
2014-04-13 13:08 ` Heartbleed Georg Bauhaus
2014-04-13 13:55 ` Heartbleed Pascal J. Bourguignon
2014-04-13 15:13 ` Heartbleed Dennis Lee Bieber
2014-04-13 15:36 ` Heartbleed Nasser M. Abbasi
2014-04-12 18:39 ` Heartbleed Simon Wright
2014-04-12 19:15 ` Heartbleed Pascal J. Bourguignon
2014-04-12 19:18 ` Heartbleed Pascal J. Bourguignon
2014-04-12 20:40 ` Heartbleed Yannick Duchêne (Hibou57)
2014-04-12 20:44 ` Heartbleed Yannick Duchêne (Hibou57)
2014-04-12 21:31 ` Heartbleed Niklas Holsti
2014-04-12 14:58 ` Heartbleed Dennis Lee Bieber
2014-04-12 18:28 ` Heartbleed Yannick Duchêne (Hibou57)
2014-04-12 18:22 ` Heartbleed Yannick Duchêne (Hibou57)
2014-04-12 18:38 ` Heartbleed Simon Clubley
2014-04-12 20:24 ` Heartbleed Yannick Duchêne (Hibou57)
2014-04-12 21:48 ` Heartbleed Simon Clubley
2014-04-17 6:15 ` Heartbleed Jacob Sparre Andersen
2014-04-17 15:55 ` Heartbleed Shark8
2014-04-17 21:01 ` Heartbleed Simon Clubley
2014-04-17 21:51 ` Heartbleed Shark8
2014-04-17 21:54 ` Heartbleed Alan Jump
2014-04-17 22:02 ` Heartbleed Adam Beneschan
2014-04-17 22:35 ` Heartbleed Simon Clubley
2014-04-17 22:55 ` Heartbleed Jeffrey Carter
2014-04-18 8:48 ` Heartbleed Simon Clubley
2014-04-18 18:02 ` Heartbleed Jeffrey Carter
2014-04-18 20:31 ` Heartbleed Yannick Duchêne (Hibou57)
2014-04-18 23:16 ` Heartbleed Pascal J. Bourguignon
2014-04-19 18:29 ` Heartbleed Simon Clubley
2014-04-21 22:50 ` Heartbleed Randy Brukardt
2014-04-18 1:38 ` Heartbleed Yannick Duchêne (Hibou57)
2014-04-18 14:59 ` Heartbleed Nasser M. Abbasi
2014-04-18 17:12 ` Heartbleed Alan Browne
2014-04-18 17:30 ` Heartbleed J-P. Rosen
2014-04-18 18:04 ` Heartbleed Jeffrey Carter
2014-04-18 18:34 ` Heartbleed Simon Clubley
2014-04-18 20:45 ` Heartbleed Jeffrey Carter
2014-04-18 21:35 ` Heartbleed Dennis Lee Bieber
2014-04-18 22:20 ` Heartbleed Jeffrey Carter
2014-04-18 22:41 ` Heartbleed Adam Beneschan
2014-04-19 15:53 ` Heartbleed Dennis Lee Bieber
2014-04-18 18:37 ` Heartbleed Alan Browne
2014-04-18 20:45 ` Heartbleed Jeffrey Carter
2014-04-18 21:06 ` Heartbleed Alan Browne
2014-04-18 22:20 ` Heartbleed Jeffrey Carter
2014-04-19 14:04 ` Heartbleed Alan Browne
2014-04-18 20:49 ` Heartbleed Shark8
2014-04-18 21:07 ` Heartbleed Alan Browne
2014-04-18 22:56 ` Heartbleed Nasser M. Abbasi
2014-04-19 4:27 ` Heartbleed tmoran
2014-04-18 21:17 ` Heartbleed Shark8
2014-04-19 18:59 ` Heartbleed Simon Clubley
2014-04-19 19:21 ` Heartbleed Shark8
2014-04-18 1:29 ` Heartbleed Yannick Duchêne (Hibou57)
2014-04-18 10:42 ` Heartbleed J-P. Rosen
2014-04-19 11:50 ` Oberon and Wirthian languages (was: Heartbleed) Ludovic Brenta
2014-04-19 12:46 ` Oberon and Wirthian languages Georg Bauhaus
2014-04-19 19:17 ` Simon Clubley
2014-04-19 19:25 ` Shark8
2014-04-19 16:35 ` Oberon and Wirthian languages (was: Heartbleed) Yannick Duchêne (Hibou57)
2014-04-19 19:32 ` Simon Clubley
2014-04-19 22:30 ` Dennis Lee Bieber
2014-04-19 22:35 ` Oberon and Wirthian languages Alan Browne
2014-04-19 16:53 ` Georg Bauhaus
2014-04-19 17:32 ` Simon Wright
2014-04-19 17:35 ` Jeffrey Carter
2014-04-19 18:06 ` Yannick Duchêne (Hibou57)
2014-04-19 18:53 ` Shark8
2014-04-19 20:08 ` Simon Clubley
2014-04-19 22:16 ` Simon Clubley
2014-04-21 13:06 ` Oberon and Wirthian languages (was: Heartbleed) Simon Clubley
2014-04-21 18:13 ` Simon Clubley
2014-04-21 18:45 ` Oberon and Wirthian languages Shark8
2014-04-21 23:26 ` Randy Brukardt
2014-04-22 0:21 ` Simon Clubley
2014-04-22 5:48 ` Shark8
2014-04-21 18:16 ` Jeffrey Carter
2014-04-22 0:34 ` Simon Clubley
2014-04-22 3:01 ` Jeffrey Carter
2014-04-22 23:31 ` Randy Brukardt
2014-04-22 6:41 ` Simon Wright
2014-04-22 12:25 ` Simon Clubley
2014-04-22 19:13 ` Niklas Holsti
2014-04-22 20:46 ` Simon Clubley
2014-04-22 23:38 ` Randy Brukardt
2014-04-23 12:16 ` Simon Clubley [this message]
2014-04-23 20:55 ` Simon Wright
2014-04-24 0:20 ` Simon Clubley
2014-04-24 13:05 ` Niklas Holsti
2014-04-24 18:51 ` Simon Clubley
2014-04-24 20:11 ` Niklas Holsti
2014-04-25 1:37 ` Randy Brukardt
2014-04-25 21:33 ` Simon Clubley
2014-04-25 21:55 ` Randy Brukardt
2014-04-25 23:16 ` Dennis Lee Bieber
2014-04-26 6:31 ` Niklas Holsti
2014-04-26 0:23 ` Nasser M. Abbasi
2014-04-26 2:46 ` Shark8
2014-04-26 2:52 ` Shark8
2014-04-26 6:37 ` Niklas Holsti
2014-04-26 6:19 ` Georg Bauhaus
2014-04-26 6:35 ` Georg Bauhaus
2014-04-26 6:42 ` Niklas Holsti
2014-04-26 17:15 ` Simon Clubley
2014-04-26 6:29 ` Niklas Holsti
2014-04-26 7:36 ` Dmitry A. Kazakov
2014-04-26 7:52 ` Georg Bauhaus
2014-04-26 8:09 ` Dmitry A. Kazakov
2014-04-26 18:32 ` Simon Clubley
2014-05-08 2:36 ` Randy Brukardt
2014-05-08 17:48 ` Niklas Holsti
2014-05-08 19:22 ` Randy Brukardt
2014-04-26 7:23 ` Simon Wright
2014-04-26 9:27 ` Niklas Holsti
2014-04-26 12:34 ` Simon Wright
2014-04-27 10:38 ` Simon Wright
2014-04-27 15:36 ` Simon Clubley
2014-04-27 14:26 ` Brian Drummond
2014-04-22 23:30 ` Randy Brukardt
2014-04-23 12:17 ` Simon Clubley
2014-05-14 9:39 ` Heartbleed gvdschoot
2014-04-12 22:01 ` Heartbleed Yannick Duchêne (Hibou57)
2014-04-18 17:58 ` Heartbleed Alan Browne
2014-04-18 17:24 ` Heartbleed - attacks? Alan Browne
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox