From 9468ccb2024e850bacfcddcabc5402968c29b956 Mon Sep 17 00:00:00 2001 From: Dimitar Trendafilov Date: Thu, 22 Nov 2018 14:17:21 +0200 Subject: Fixed linux build --- spasm/src/asm/bytecode.cpp | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) (limited to 'spasm/src/asm/bytecode.cpp') diff --git a/spasm/src/asm/bytecode.cpp b/spasm/src/asm/bytecode.cpp index ad436ce..a4a1e6e 100644 --- a/spasm/src/asm/bytecode.cpp +++ b/spasm/src/asm/bytecode.cpp @@ -26,7 +26,20 @@ void Bytecode_File::push_opcode(Bytecode_Stream::Opcode_t opcode) push_byte(opcode); } -void Bytecode_File::push_integer(int number, int size) +union DoubleToBits +{ + double as_double; + int64_t as_bits; +}; + +int64_t to_bits(double d) +{ + DoubleToBits v; + v.as_double = d; + return v.as_bits; +}; + +void Bytecode_File::push_integer(int64_t number, int size) { for (int i = 0; i < size; ++i) push_byte((number >> (i << 3)) & 0xff); @@ -34,7 +47,7 @@ void Bytecode_File::push_integer(int number, int size) void Bytecode_File::push_double(double number) { - auto bits = *reinterpret_cast(&number); + auto bits = to_bits(number); for (size_t i = 0; i < sizeof(size_t); ++i) push_byte((bits >> (i << 3)) & 0xff); } @@ -49,7 +62,7 @@ void Bytecode_Memory::push_opcode(Bytecode_Stream::Opcode_t opcode) push_byte(opcode); } -void Bytecode_Memory::push_integer(int number, int size) +void Bytecode_Memory::push_integer(int64_t number, int size) { for (int i = 0; i < size; ++i) push_byte((number >> (i << 3)) & 0xff); @@ -57,7 +70,7 @@ void Bytecode_Memory::push_integer(int number, int size) void Bytecode_Memory::push_double(double number) { - auto bits = *reinterpret_cast(&number); + auto bits = to_bits(number); for (size_t i = 0; i < sizeof(size_t); ++i) push_byte((bits >> (i << 3)) & 0xff); } -- cgit v1.3.1-23-gd82d