__builtin_bswap
mgba 読んでたら __builtin_bswap というマクロが出てきた。
これは GCC に含まれるビルトイン関数。
これは、バイトを逆順に呼び出す関数。例えば、データ上のリトルエンディアンの値をビッグエンディアンで読み出したりできる。 正確には、変換するデータの大きさを表す 数字の suffix がつく。
簡単に確認してみる。
#include <stdio.h> int main() { printf("%x\n", __builtin_bswap32(0x12345678)); return 0; }
出力
% ./a.out 78563412
0x12345678 の 32bit のデータが逆順に読み出すことを確認することができた。