Всичко си работи точно както го очакваш. Сеща се, че са точно по един регистър и си ползва регистрите. Т.е. няма run time penalty но пък има много предимства по време на програмиране - първо не ти позволява да смесиш приравнявания на променливи с различен endianness, второ навсякъде в кода е очевадно, че еди коя си променлива е с еди какъв си endianness.
Те ти малко код да видиш за какво иде реч:
little_big_endian.h
#pragma once
#include <stdint.h>
typedef struct __attribute__((scalar_storage_order("little-endian"))) little_endian_int64_t { int64_t little_endian; } little_endian_int64_t;
typedef struct __attribute__((scalar_storage_order("little-endian"))) little_endian_int32_t { int32_t little_endian; } little_endian_int32_t;
typedef struct __attribute__((scalar_storage_order("little-endian"))) little_endian_int16_t { int16_t little_endian; } little_endian_int16_t;
typedef struct __attribute__((scalar_storage_order("little-endian"))) little_endian_uint64_t { uint32_t little_endian; } little_endian_uint64_t;
typedef struct __attribute__((scalar_storage_order("little-endian"))) little_endian_uint32_t { uint32_t little_endian; } little_endian_uint32_t;
typedef struct __attribute__((scalar_storage_order("little-endian"))) little_endian_uint16_t { uint16_t little_endian; } little_endian_uint16_t;
typedef struct __attribute__((scalar_storage_order("big-endian"))) big_endian_int64_t { int32_t big_endian; } big_endian_int64_t;
typedef struct __attribute__((scalar_storage_order("big-endian"))) big_endian_int32_t { int32_t big_endian; } big_endian_int32_t;
typedef struct __attribute__((scalar_storage_order("big-endian"))) big_endian_int16_t { int16_t big_endian; } big_endian_int16_t;
typedef struct __attribute__((scalar_storage_order("big-endian"))) big_endian_uint64_t { uint32_t big_endian; } big_endian_uint64_t;
typedef struct __attribute__((scalar_storage_order("big-endian"))) big_endian_uint32_t { uint32_t big_endian; } big_endian_uint32_t;
typedef struct __attribute__((scalar_storage_order("big-endian"))) big_endian_uint16_t { uint16_t big_endian; } big_endian_uint16_t;
Предполагам, че нямаш нужда от пример как се ползва. Autocomplete на VIM & VSCode се справят чудесно.