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