Bytes, chars, ints, etc (gnu algol 68, C, ...)

Pietro Monteiro pietro.gcc@sociotechnical.xyz
Fri Jan 16 04:18:03 GMT 2026


Sorry to cut into the conversation. For 32 and 64-bit targets this is
the proposed equivalence between Algol 68 and C types in GCC:

|  GA 68 Name | GA 68 Size |    C Name     | ILP32 | LP64 | LLP64 |
| ----------- | ---------- | ------------- | ----- | ---- | ----- |
| short short |       8    | (signed) char |    8  |   8  |    8  |
|    short    |      16    |     short     |   16  |  16  |   16  |
|     int     |      32    |      int      |   32  |  32  |   32  |
|     int     |      32    |      long     |   32  |      |   32  |
|     long    |      64    |      long     |       |  64  |       |
|     long    |      64    |   long long   |   64  |  64  |   64  |
|  long long  |     128    |    __int128   |  128  |  128 |  128  |

So for example our lseek would return an A68 long int, which is to say a C long int.

We need to decide what to do for AVR;

On 8-bit AVR:

|    C Name     |  Size |
| ------------- | ----- |
| (signed char) |    8  |
|     short     |    8  |
|      int      |    8  |
|      long     |   16  |
|   long long   |   32  |

On 16-bits AVR:

|    C Name     |  Size |
| ------------- | ----- |
| (signed char) |    8  |
|     short     |   16  |
|      int      |   16  |
|      long     |   32  |
|   long long   |   64  |

pietro


More information about the Algol68 mailing list