Add a function to test indianness of the platform
This commit is contained in:
20
src/littlebigman.c
Normal file
20
src/littlebigman.c
Normal file
@ -0,0 +1,20 @@
|
||||
/*
|
||||
* littlebigman.c
|
||||
*
|
||||
* Created on: 23 mai 2015
|
||||
* Author: coissac
|
||||
*/
|
||||
|
||||
#include <littlebigman.h>
|
||||
|
||||
bool islittlend()
|
||||
{
|
||||
union { int entier;
|
||||
char caractere[4] ;
|
||||
} test;
|
||||
|
||||
test.entier=0x01020304;
|
||||
|
||||
return (test.caractere[3] == 1);
|
||||
}
|
||||
|
54
src/littlebigman.h
Normal file
54
src/littlebigman.h
Normal file
@ -0,0 +1,54 @@
|
||||
/*
|
||||
* littlebigman.h
|
||||
*
|
||||
* Created on: 23 mai 2015
|
||||
* Author: coissac
|
||||
*/
|
||||
|
||||
#ifndef LITTLEBIGMAN_H_
|
||||
#define LITTLEBIGMAN_H_
|
||||
|
||||
#include <stdbool.h>
|
||||
|
||||
/**
|
||||
* Test is the architecture of the processor is little endian.
|
||||
*
|
||||
* ##Two classes of CPU architecture can be define:
|
||||
* - little endian
|
||||
* - big endian
|
||||
*
|
||||
* They describe the way the processor store multi-byte values
|
||||
* in memory. Considering an 32 bits integer value encoded in
|
||||
* hexadecimal `0x11223344`. This value needs four bytes to be
|
||||
* stored. These for bytes will have consecutive addresses in memory.
|
||||
* Let says that these addresses will be : 01, 02, 03, and 04
|
||||
*
|
||||
* ###A big endian architecture will store our integer with the following schema:
|
||||
*
|
||||
* Address | 01 | 02 | 03 | 04
|
||||
* ---------|------|------|------|------
|
||||
* value | Ox11 | Ox22 | 0x33 | 0x44
|
||||
*
|
||||
* In this architecture the last address (the end of the representation) is
|
||||
* used to store the byte of higher weight (BIG ENDian)
|
||||
*
|
||||
* ###A little endian architecture will store our integer with the following schema:
|
||||
*
|
||||
* Address | 01 | 02 | 03 | 04
|
||||
* ---------|------|------|------|------
|
||||
* value | Ox44 | Ox33 | 0x22 | 0x11
|
||||
*
|
||||
* In this architecture the last address is
|
||||
* used to store the byte of lighter weight (LITTLE ENDian)
|
||||
*
|
||||
* @return a `bool` value:
|
||||
* - `true` if the architecture is little endian
|
||||
* - `false` if the architecture is big endian
|
||||
*
|
||||
* @author Eric Coissac (coissac)
|
||||
* @created on 23/05/2015
|
||||
*/
|
||||
bool islittlend();
|
||||
|
||||
|
||||
#endif /* LITTLEBIGMAN_H_ */
|
Reference in New Issue
Block a user