Extremely CISC instructions
ben
bfranchuk at jetnet.ab.ca
Wed Aug 25 16:58:30 CDT 2021
On 2021-08-25 3:40 p.m., Van Snyder via cctalk wrote:
> On Wed, 2021-08-25 at 14:08 -0700, Fred Cisin via cctalk wrote:
>>>> That is not how C defines bytes or ints, fyi.
>>
>> On Wed, 25 Aug 2021, ben via cctalk wrote:
>>> I suspect the standard says a byte is at least 7 bits.
>>> Thus 8 bit data is NOT PORTABLE.
>>
>> I don't know from "the standard", but, K&R said that
>> an "int" could be whatever size was most convenient for the
>> processor,
>> BUT, that an "int" could not be shorter than a "short", nor longer
>> than a
>> "long"
>
> The C 2011 standard (ISO/IEC 9980-2011) subclause 6.2.5 paragraphs 4-9
> say
>
> There are five standard signed integer types, designated as signed
> char, short int, int, long int, and long long int. (These and other
> types may be designated in several additional ways, as described in
> 6.7.2.) There may also be implementation-defined extended signed
> integer types.38) The standard and extended signed integer types are
> collectively called signed integer types.
>
> An object declared as type signed char occupies the same amount of
> storage as‘‘plain’’ char object. A ‘‘plain’’ int object has the natural
> size suggested by the architecture of the execution environment (large
> enough to contain any value in the range INT_MIN to INT_MAX as defined
> in the header <limits.h>).
>
> For each of the signed integer types, there is a corresponding (but
> different) unsigned integer type (designated with the keyword unsigned)
> that uses the same amount of storage (including sign information) and
> has the same alignment requirements. The type _Bool and the unsigned
> integer types that correspond to the standard signed integer types are
> the standard unsigned integer types. The unsigned integer types that
> correspond to the extended signed integer types are the extended
> unsigned integer types. The standard and extended unsigned integer
> types are collectively called unsigned integer types.
>
> The standard signed integer types and standard unsigned integer types
> are collectively called the standard integer types; the extended signed
> integer types and extended unsigned integer types are collectively
> called the extended integer types.
>
> For any two integer types with the same signedness and different
> integer conversion rank (see 6.3.1.1), the range of values of the type
> with smaller integer conversion rank issubrange of the values of the
> other type.
>
> The range of nonnegative values of a signed integer type is a subrange
> of the corresponding unsigned integer type, and the representation of
> the same value in each type is the same.41) A computation involving
> unsigned operands can never overflow, because a result that cannot be
> represented by the resulting unsigned integer type is reduced modulo
> the number that is one greater than the largest value that can be
> represented by the resulting type.
>
> 41) The same representation and alignment requirements are meant to
> imply interchangeability as arguments to functions, return values from
> functions, and members of unions.
>
What did C for the PDP 10 do?
More information about the cctalk
mailing list