Big-Endian Testing with QEMU
7 hours ago
- #QEMU Emulation
- #Cross-Compilation
- #Byte Order
- Big-endian and little-endian refer to byte order in memory, with big-endian storing the most significant byte first and little-endian storing the least significant byte first.
- Most modern personal computers and smartphones use little-endian (e.g., Intel x86_64, ARM AArch64), but some architectures like MIPS and IBM z/Architecture (s390x) are big-endian.
- Testing code for big-endian systems can be done without physical hardware using QEMU's user mode emulation to run binaries on emulated big-endian systems.
- A C program (endian.c) demonstrates byte order by printing each byte of a 32-bit integer, showing different outputs on little-endian vs. big-endian systems.
- On a little-endian Linux machine, the program outputs bytes in reverse order (0x78, 0x56, 0x34, 0x12), while on emulated MIPS or s390x via QEMU, it outputs in big-endian order (0x12, 0x34, sentering s390x/0x56, 0x78).
- Cross-compiling with GCC for target architectures (e.g., mips-linux-gnu-gcc, s390x-linux-gnu-gcc) and running with QEMU (qemu-mips, qemu-s390x) allows easy testing of big-endian compatibility.