diff options
author | Aryadev Chavali <aryadev@aryadevchavali.com> | 2024-04-14 03:54:54 +0630 |
---|---|---|
committer | Aryadev Chavali <aryadev@aryadevchavali.com> | 2024-04-14 03:54:54 +0630 |
commit | 3b912495dec2868f1afae0319471d5ea9451c371 (patch) | |
tree | 65d31c9d2b99f2409e90a54dbdd69c588c96a79b /lib/base.h | |
parent | e12f36466934dcbc48c0d5847591365191504270 (diff) | |
download | ovm-3b912495dec2868f1afae0319471d5ea9451c371.tar.gz ovm-3b912495dec2868f1afae0319471d5ea9451c371.tar.bz2 ovm-3b912495dec2868f1afae0319471d5ea9451c371.zip |
Created custom functions to convert (h)words to and from bytecode format
Instead of using endian.h that is not portable AND doesn't work with
C++, I'll just write my own using a forced union based type punning
trick.
I've decided to use little endian for the format as well: it seems to
be used by most desktop computers so it should make these functions
faster to run for most CPUs.
Diffstat (limited to 'lib/base.h')
-rw-r--r-- | lib/base.h | 19 |
1 files changed, 17 insertions, 2 deletions
@@ -13,8 +13,6 @@ #ifndef BASE_H #define BASE_H -#define _DEFAULT_SOURCE -#include <endian.h> #include <stdint.h> /* Basic macros for a variety of uses. Quite self explanatory. */ @@ -130,4 +128,21 @@ word convert_bytes_to_word(byte *); */ void convert_word_to_bytes(word w, byte *buffer); +/** Convert a half word into bytecode format (little endian) + */ +hword hword_htobc(hword); + +/** Convert a half word in bytecode format (little endian) to host + * format + */ +hword hword_bctoh(hword); + +/** Convert a word into bytecode format (little endian) + */ +word word_htobc(word); + +/** Convert a word in bytecode format (little endian) to host format + */ +word word_bctoh(word); + #endif |