From 1be20dd542b61115fe7d94706fc82a2e0c1477f3 Mon Sep 17 00:00:00 2001 From: Nathan Fisher Date: Thu, 20 Jul 2023 22:50:22 -0400 Subject: [PATCH] Finish functions in bytes.c --- Makefile | 10 +++++++--- src/bytes.c | 38 +++++++++++++++++++++++--------------- 2 files changed, 30 insertions(+), 18 deletions(-) diff --git a/Makefile b/Makefile index 13bf935..f1c9539 100644 --- a/Makefile +++ b/Makefile @@ -36,6 +36,7 @@ PREFIX ?= /usr/local includedir = $(DESTDIR)$(PREFIX)/include libdir = $(DESTDIR)$(PREFIX)/lib +srcs += src/bytes.c srcs += src/haggis.c hdrs += include/haggis.h @@ -71,10 +72,13 @@ haggis.o: $(srcs) $(hdrs) libhaggis.a: haggis.o $(AR) rcs $@ haggis.o -haggis_shared.o: $(srcs) $(hdrs) - $(CC) -c $(cflags) -fpic -o $@ $(srcs) +bytes_shared.o: src/bytes.c include/haggis.h + $(CC) -c $(cflags) -fpic -o $@ src/bytes.c -libhaggis.so: haggis_shared.o +haggis_shared.o: src/haggis.c include/haggis.h + $(CC) -c $(cflags) -fpic -o $@ src/haggis.c + +libhaggis.so: bytes_shared.o haggis_shared.o $(CC) -shared -o $@ haggis_shared.o clean: diff --git a/src/bytes.c b/src/bytes.c index 4926603..c54debd 100644 --- a/src/bytes.c +++ b/src/bytes.c @@ -26,14 +26,29 @@ u16 le_bytes_to_u16(u8 arr[2]) { } void u64_to_le_bytes(u64 num, u8 arr[8]) { - // todo + u64 eighth = (num & 0xFF00000000000000) >> 56; + u64 seventh = (num & 0xFF000000000000) >> 48; + u64 sixth = (num & 0xFF0000000000) >> 40; + u64 fifth = (num & 0xFF00000000) >> 32; + u64 fourth = (num & 0xFF000000) >> 24; + u64 third = (num & 0xFF0000) >> 16; + u64 second = (num & 0xFF00) >> 8; + u64 first = num & 0xFF; + arr[0] = (u8)first; + arr[1] = (u8)second; + arr[2] = (u8)third; + arr[3] = (u8)fourth; + arr[4] = (u8)fifth; + arr[5] = (u8)sixth; + arr[6] = (u8)seventh; + arr[7] = (u8)eighth; } void u32_to_le_bytes(u32 num, u8 arr[4]) { u32 fourth = (num & 0xFF000000) >> 24; - u32 third = (num & 0x00FF0000) >> 16; - u32 second = (num & 0x0000FF00) >> 8; - u32 first = num & 0x000000FF; + u32 third = (num & 0xFF0000) >> 16; + u32 second = (num & 0xFF00) >> 8; + u32 first = num & 0xFF; arr[0] = (u8)first; arr[1] = (u8)second; arr[2] = (u8)third; @@ -41,16 +56,9 @@ void u32_to_le_bytes(u32 num, u8 arr[4]) { } void u16_to_le_bytes(u16 num, u8 arr[2]) { - // todo + u16 second = (num & 0xFF00) >> 8; + u16 first = num & 0xFF; + arr[0] = (u8)first; + arr[1] = (u8)second; } -int main() { - u8 arr[4] = { 42, 1, 0, 0 }; - u8 new_arr[4]; - u32 num; - - num = le_bytes_to_u32(arr); - printf("Num: %i\n", num); - u32_to_le_bytes(num, new_arr); - printf("Array: { %i, %i, %i, %i };\n", new_arr[0], new_arr[1], new_arr[2], new_arr[3]); -}