From 3b912495dec2868f1afae0319471d5ea9451c371 Mon Sep 17 00:00:00 2001 From: Aryadev Chavali Date: Sun, 14 Apr 2024 03:54:54 +0630 Subject: 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. --- lib/base.h | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) (limited to 'lib/base.h') diff --git a/lib/base.h b/lib/base.h index daa6c58..8ce3510 100644 --- a/lib/base.h +++ b/lib/base.h @@ -13,8 +13,6 @@ #ifndef BASE_H #define BASE_H -#define _DEFAULT_SOURCE -#include #include /* 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 -- cgit v1.2.3-13-gbd6f