16-bit int

Göran Steen goran.steen@eis.semcon.com
Fri Aug 10 08:53:00 GMT 2012


Thank you for your response.

Sorry, this will not help. I want to test the snippets, not change them. Besides, I don't know if the compiler that will be used for the 16-bit machine will support any of the types you suggest, so I only want to use standard types.

BR /göran

-----Original Message-----
From: David Brown [mailto:david@westcontrol.com] 
Sent: den 10 augusti 2012 10:12
To: Göran Steen
Cc: gcc-help@gcc.gnu.org
Subject: Re: 16-bit int

On 10/08/2012 09:15, Göran Steen wrote:
> Thank you for your response.
>
> I want to make sure that my code snippets, if they are compiled and 
> run on a machine with 16-bit int, still works. I don't have access to 
> such a machine, so I want to compile and run them with 16-bit int on 
> my machine that defaults to 32-bit int. Especially the intermediate 
> results' size are interesting. What happens if they are truncated to 
> 16-bit?
>

The answer here is simple - #include <stdint.h>, and use types like int_fast16_t.  If intermediary results might need 32 bits, cast to int_fast32_t as needed.  On a target with 32-bit ints, both these types will normally be 32-bit (though int_fast16_t could theoretically be 16-bit), and the cast will do nothing.  On a target with 16-bit ints, you will get 16-bit and 32-bit ints respectively.

This will give you optimal code for all sizes of target ints, while also being correct on each target.

mvh.,

David


> There will not be any problem with library compatibility.
>
> BR /göran
>
> -----Original Message----- From: David Brown 
> [mailto:david@westcontrol.com] Sent: den 9 augusti 2012 15:37 To:
> Göran Steen Cc: gcc-help@gcc.gnu.org Subject: Re: 16-bit int
>
> On 09/08/2012 13:26, Göran Steen wrote:
>> Hi!
>>
>> I use gcc version 4.3.4, where int is 32-bit variables. Is it 
>> possible to setup compiler to compile int as 16-bit variables?
>>
>> With best regards / Med vänlig hälsning / Mit freundlichen Grüßen / 
>> Saudações
>>
>> Göran Steen
>
>
> The size of an int depends on the target - gcc supports dozens of 
> targets.  Most have 32-bit ints, but some have 16-bit ints and at 
> least one has a compile-time option to support 8-bit ints (though that 
> goes against C standards, and is deprecated on current builds).
> There are probably also targets with 64-bit ints.
>
> So step one in asking for help here is to tell us your target.
>
> Step two is to tell us what you are hoping to achieve.  Almost 
> certainly, there is no way to change the int size - and even if there 
> happens to be a command-line switch for the given target, it is 
> probably not a good idea (you'll get in a horrible mess with library 
> compatibility, for example).  And even if it is possible, it is highly 
> unlikely to be advantageous.  Tell us what you really want to achieve 
> here, and people can give you advice towards that.
>
> mvh.,
>
> David
>



More information about the Gcc-help mailing list