tech-misc archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Endian-specific types
On Sat, Sep 10, 2016 at 04:39:18PM -0400, Mouse wrote:
> >> Much of the problem with endian-specific types is that - at least in
> >> C, and I think in C++ - types describe values, and endianness is not
> >> a property of a value; it's a property of a value as serialized into
> >> an octet (or other unit smaller than the value) stream. [...]
> > But it does make sense to talk about the byte-endianness of a word in
> > memory, and then hey what do you know, it's a property of a variable.
>
> True as far as it goes. But what you really want there is a type with
> type-specific methods for loading and storing. That is, you need a
> language that has a distinction - or at least has the ability to create
> a distinction - between values qua values and values-as-stored.
Maybe. But on most machines, if you load an opposite-endian word from
memory, you get an opposite-endian word in a register, which you then
need to swap before you do arithmetic on it. Which is what happens in
ordinary (unannotated) code when you read e.g. sin_port and call ntohs
on it.
So it doesn't really work that way. In any event it's a useful
annotation, whether or not the compiler understands it, because a
program checker certainly can.
> That's why I think trying to do endian-specific types in C - possibly
> excepting as a compiler extension - is a mistake.
Well, it has to be a compiler extension because it's not in the
language spec...
--
David A. Holland
dholland%netbsd.org@localhost
Home |
Main Index |
Thread Index |
Old Index