__builtin_bswap

mgba 読んでたら __builtin_bswap というマクロが出てきた。

これは GCC に含まれるビルトイン関数。

gcc.gnu.org

これは、バイトを逆順に呼び出す関数。例えば、データ上のリトルエンディアンの値をビッグエンディアンで読み出したりできる。 正確には、変換するデータの大きさを表す 数字の suffix がつく。

簡単に確認してみる。

#include <stdio.h>


int main() {
    printf("%x\n", __builtin_bswap32(0x12345678));
    return 0;
}

出力

% ./a.out
78563412

0x12345678 の 32bit のデータが逆順に読み出すことを確認することができた。